- PR -

画面表示直後に処理を行いたい

1
投稿者投稿内容
あひる隊長
常連さん
会議室デビュー日: 2003/07/23
投稿数: 36
投稿日時: 2005-02-22 01:18
Windowsフォームでアプリを開発しているのですが、
EXEを起動して最初に画面が表示された後に、自動的に
ある処理を実行したいのですが、これはどうすれば
良いのでしょうか?

よろしくお願いします。

Win2k + VS2003です。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-02-22 08:10
引用:

Windowsフォームでアプリを開発しているのですが、
EXEを起動して最初に画面が表示された後に、自動的に
ある処理を実行したいのですが、これはどうすれば
良いのでしょうか?



タイマーを使うのが簡単でしょう。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-02-22 09:11
ガーフィールドさん、お早うございます。

適当なイベントハンドラ(Activated とか Paintとかの)で処理を実行して、二度目が実行されないようにハンドラの関連づけを削除する、ってのはどうでしょう。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-02-22 10:25
引用:

EXEを起動して最初に画面が表示された後に、自動的に
ある処理を実行したいのですが、これはどうすれば


の意図が、

・プログラムを起動後に一回だけ処理したい、だったら

Form_Load時の処理 Mainを置く
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19079&forum=7&3

・ある画面がインスタンス化され表示される度に、表示された後に一回だけ実行したい、だったら渋木さん、ガーフィールドさんの方法

・ある画面のインスタンスを作る毎に実行すればいいなら、そのインスタンスを作ったコードの前後どちらかに目的の処理を書く。ただし表示直後とは限らなくなります。

・ある画面のインスタンスにかかわらず、そのクラスで1つ目のインスタンスが作成されるとき、ということなら、グローバルなスコープを持つフラグで制御

ほかにもいろいろ考えられます。
これまでに解決方法がでていない、ということでしたら、何をやりたいかをもう少し書いていただけるといいかも。


_________________
たつごろー http://www.codeseek.net
MCSE MCSD.NET、MCDBA、MCSA、MCAD
Oracle Master Platinum 9i、Oracle Master Linux+

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-02-22 10:26 ]
あひる隊長
常連さん
会議室デビュー日: 2003/07/23
投稿数: 36
投稿日時: 2005-02-22 18:13
みなさん、レスありがとうございます。

タイマーに近い方法ですが、別スレッドを作ってそちら側
で処理を行うことにしました。
プライオリティの設定を調整すればなんとかパフォーマンスも
大丈夫そうです。

最初にきくちゃんのやり方と同じことをやってみたのですが、
これだと完全に表示されない状態で、処理が走ってしまい結局
うまくいきませんでした。

とりあえず現状はうまくいってます。

お世話になりました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-02-22 21:33
ガーフィールドさん、こんばんは。

引用:

これだと完全に表示されない状態で、処理が走ってしまい結局
うまくいきませんでした。


あらら、そうですか。
参考までに、こんな感じ↓で、レンダリング完了後の画面をキャプチャできましたよ。

コード:
Private Sub Form1_Paint(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.PaintEventArgs) _
        Handles MyBase.Paint
    RemoveHandler Me.Paint, AddressOf Me.Form1_Paint
    Application.DoEvents()
    SendKeys.Send("%{PRTSC}")
End Sub


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-02-23 19:17
 見落としてた。
 きくちゃんさんの方法で、イベントはアイドルイベント。

_________________
1

スキルアップ/キャリアアップ(JOB@IT)