子フォームから直接親フォームとやりとりすることができますが、子コントロールでイベントを発生させ、親フォームのイベントを購読する方がよいでしょう。子供から
レイズのイベント:
public event EventHandler CloseButtonClicked;
protected virtual void OnCloseButtonClicked(EventArgs e)
{
var handler = CloseButtonClicked;
if (handler != null)
handler(this, e);
}
private void CloseButton_Click(object sender, EventArgs e)
{
//While you can call `this.ParentForm.Close()` it's better to raise an event
OnCloseButtonClicked(e);
}
親にイベントを登録して使用します。
//Subscribe for event using designer or in form load
this.userControl11.CloseButtonClicked += userControl11_CloseButtonClicked;
//Close the form when you received the notification
private void userControl11_CloseButtonClicked(object sender, EventArgs e)
{
this.Close();
}
あなたが質問のために提供された記述は、タイトル、異なるです。あなたは何を正確にしたいですか?子コントロールをクリックすると、親フォームのクリックイベントを発生させますか?子コントロール内のボタンをクリックしたときに親フォームを閉じたいですか?または、他の何か? –
ユーザーは、子コントロール上のボタンをクリックします - 子コントロール上のいくつかのイベントを除いて、親コントロールによってさえいくつかのアクションを取る必要がありますが、親コントロールに信号を送る最良の方法はわかりません。子供に何らかの出来事が引き起こされたことを示しています。これらのアクションは、すべてのフォームを閉じる、より複雑なフォームにするなどの一般的なアクションです。しかし、親は、子コントロールに属するコントロールでイベントがトリガーされたことに気づく必要があります。 – user1173240
子フォームから直接親フォームとやりとりすることができますが、子コントロールによってイベントを発生させ、親フォームのイベントを購読する方が良いでしょう。 –