私はUserControlをロードしたMainFormを持っています。このUserControlにはテキストボックスと保存ボタンがほとんどありません。保存をクリックすると、テキストボックスの情報がファイルに保存されます。 MainFormにリロードできる情報が更新されたことを通知したいと思います。UserControlがメソッド呼び出しを実行するとき、親コントロールにどのように通知するのですか?
どうすればいいですか?
私はUserControlをロードしたMainFormを持っています。このUserControlにはテキストボックスと保存ボタンがほとんどありません。保存をクリックすると、テキストボックスの情報がファイルに保存されます。 MainFormにリロードできる情報が更新されたことを通知したいと思います。UserControlがメソッド呼び出しを実行するとき、親コントロールにどのように通知するのですか?
どうすればいいですか?
イベントを使用する。
例えば、あなたの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
};
実際これは難しい部分ではありません。この話題を参照してください:http://stackoverflow.com/questions/786383/c-sharp-events-and-thread-safety – ken2k
ありがとう...作品 – eugeneK
@ ken2k非常に興味深いです - 私は元のコメントを削除します、それ今は私には間違っているようです(Essential C#3.0、Michaelis - 専門家が間違っている可能性があるという面白いことを読んでください)。 – Adam