Ответ 1
В то время как вы можете взаимодействовать с родительской формой непосредственно от дочерней, лучше вызывать некоторые события с помощью дочернего элемента управления и подписываться на события в родительской форме.
Поднять событие от ребенка:
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 better to raise an event
OnCloseButtonClicked(e);
}
Подписаться и использовать событие в Parent:
//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();
}
Чтобы узнать больше о событиях, взгляните на: