- PR -

【C#、.NET】Application.RunでFormを表示した直後にメソッドを実行するには?

1
投稿者投稿内容
beck
常連さん
会議室デビュー日: 2004/04/14
投稿数: 24
投稿日時: 2005-10-18 16:23
C#(.NET),Windows2003Serverで開発をしています。
 Application.Runでメインフォームを表示後に、別クラスのメソッドをはしらせたいのですが、メインフォームが表示されたことを判定するイベントが見つかりません。。
 そのようなイベントはないのでしょうか?なければ、ほかに方法があるのでしょうか?ご存知の方がいらっしゃれば、どうかご教授願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-18 16:32
引用:

beckさんの書き込み (2005-10-18 16:23) より:

メインフォームが表示されたことを判定するイベントが見つかりません。


Form.Activated イベントですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-18 16:33
お世話になります。

メインフォームのLoadイベントの最後に、
別クラスのデリゲートを呼ぶのは
いかがでしょうか。
beck
常連さん
会議室デビュー日: 2004/04/14
投稿数: 24
投稿日時: 2005-10-18 17:35
じゃんぬねっとさん、なおこさん、早速の返信ありがとうごさいます☆
 
 処理的には、メインフォーム表示直後にクラスライブラリのフォームを表示し、そのフォームで入力した結果をメインフォームに反映させる、という内容でした。
 じゃんぬねっとさんから教えていただいたActivated イベントで結果的には解決しました。別フォームのフォームは1度だけ表示したかったのですが、Activatedイベントではメインフォームに戻るたびActivatedイベントが発生したので、フラグを立てて強引に解決した感じです(汗)
 なおこさんより教えてもらったメソッドをデリケードに登録し、メソッドを呼び出す方法はまだ試していませんが、こちらの方法でも試してみようと思います。

ありがとうございました(・ω・`)
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-10-18 19:45
フラグで管理するのではなく、ActivatedイベントのハンドラでActivatedに追加したハンドラを削除しましょう。
コード:
//コンストラクタにて
this.Activated += new EventHandler(AtFirstMethod);

//初回処理をするハンドラ
private void AtFirstMethod(object sender, EventArgs e) {
    this.Activated -= new EventHandler(AtFirstMethod);
    //以降初回に処理する内容
}

nak2k
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 86
投稿日時: 2005-10-18 22:22
ん……?
Loadイベント(フォームの表示直前で発生)のほうが素直に書けませんか?

コード:

// Mainメソッドにて
MainForm form = new MainForm();
Other other = new Other();
form.Load += new EventHandler(other.Start);
Application.Run(form);

// 別クラス
class Other {
// メインフォームが表示されたときに呼ばれるメソッド
public void Start(object sender, EventArgs e) {
}
}


Loadのほうだとハンドラ削除は不要です。


[ メッセージ編集済み 編集者: nak2k 編集日時 2005-10-18 22:23 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-19 08:49
引用:

nak2kさんの書き込み (2005-10-18 22:22) より:

ん……?
Loadイベント(フォームの表示直前で発生)のほうが素直に書けませんか?
Loadのほうだとハンドラ削除は不要です。


「メインフォームが表示されたことを判定する」と書いてあったからではないでしょうか?
また、Load イベントの場合は不都合が起きることもあります。(Draw 系など)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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