2011-12-26 13 views
2

私はUserControlをロードしたMainFormを持っています。このUserControlにはテキストボックスと保存ボタンがほとんどありません。保存をクリックすると、テキストボックスの情報がファイルに保存されます。 MainFormにリロードできる情報が更新されたことを通知したいと思います。UserControlがメソッド呼び出しを実行するとき、親コントロールにどのように通知するのですか?

どうすればいいですか?

答えて

5

イベントを使用する。

例えば、あなたのUserControlでイベントを宣言します。

public event EventHandler SaveClicked; 

を、その後、クリックし、保存上げるイベントに:

if (this.SaveClicked != null) 
{ 
    this.SaveClicked(this, EventArgs.Empty); 
} 

をし、最終的にあなたのイベントにメインフォームでハンドラをアタッチ:

... 
YourUserControl ctrl = new YourUserControl(); 
ctrl.SaveClicked += (sender, e) => 
{ 
    // Put logic of your main form here 
}; 
+0

実際これは難しい部分ではありません。この話題を参照してください:http://stackoverflow.com/questions/786383/c-sharp-events-and-thread-safety – ken2k

+0

ありがとう...作品 – eugeneK

+0

@ ken2k非常に興味深いです - 私は元のコメントを削除します、それ今は私には間違っているようです(Essential C#3.0、Michaelis - 専門家が間違っている可能性があるという面白いことを読んでください)。 – Adam

1

イベントを使用できます。つまり、userControlはイベントを親に送信し、親はイベントリスナーとして登録します。

+0

私はそれをどうすればいいですか? – eugeneK

関連する問題