2011-10-19 36 views
6

簡単な質問。私は、MainFormとsettingsFormを持っています。設定フォームは一度初期化され、ユーザーがボタンをクリックするたびに表示されます。このボタンをクリックすると、何かをする必要があります。ShowDialog(ParentForm)がC#で呼び出されたときにトリガされるイベント

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form 

これは設定フォームを呼び出すMainFormです。これは問題ありません。しかし、私はこれが起こるたびに何かをするためにSettingsFormが必要です。現在、この呼び出しが実際にハンドラを設定できるイベントをトリガするかどうかはわかりません。イベントを引き起こしますか?もしそうでなければ、この呼び出しが起こるたびに何かをするために私のSettingsFormに伝えることができる別の方法がありますか?

注:その行の後のメインフォームのコードは、SettingsFormが返されるまで実行されませんが、それは意図的です。

ありがとうございました。

編集:私のフォームでこれを行うには、特定のコントロールを選択する必要がありますが、フォームがすべて読み込まれるまでは不可能です。

+0

この質問はここで関連します:http://stackoverflow.com/questions/4860490/managed-version-of-spy-tool –

答えて

6

設定フォームでOnVisibleChangedメソッドを上書きできます。イベントのいずれかの潜在的なオブザーバー台無しにしないためにかかわらず、base.OnVisibleChangedを呼び出すようにしてください

1

おそらく、VisibleChangedイベントを使用します。

3

FormShownイベント(と基底クラスがそのメソッドの内部で行うことができない何かを。) - フォームが最初に表示されるときに一度だけ上げます。 OnPaint/OnActivate - フォームがアクティブになるたびに、他のアプリケーションと切り替えてもこれらのイベントが発生します。これはおそらく実行したくないものです。 フォームの可視性を変更する場合は、OnVisibleChanged を使用できます。フォームを最小化する場合は、OnSizeChanged/OnLocationChangedというイベントを使用できます。

あなたに合っていない場合は、パブリックプロパティを作成し、フォームを閉じたり隠したりする場合はfalseに設定し、それを表示する前にtrueに設定します。 OnActivate、このプロパティを使用してタスクを実行します。

関連する問題