Как отметил @ hans-passant.
Использование событий дает нам простой способ использовать шаблон наблюдателя.
Реализация пользовательского Event
In UserControl1
и вызов это событие (уведомление наблюдателей об изменении) при нажатии кнопки, чтобы скрыть второй элемент управления:
public partial class UserControl1 : UserControl
{
public event EventHandler HideRequested;
...
private void button1_Click(object sender, EventArgs e)
{
if (HideRequested != null)
{
HideRequested.Invoke(this, EventArgs.Empty);
}
}
}
В форме Form1 присоединить к событию, реализовав обработчик события:
public Form1()
{
InitializeComponent();
userControl11.HideRequested += userControl11_HideRequested;
}
void userControl11_HideRequested(object sender, EventArgs e)
{
userControl21.Hide();
}
Конечно, есть и другие способы для достижения этой цели, но любой другой способ, вероятно, привнесет связывание в ваш код. Например, это также верно (изменяя модификатор доступа пользовательского элемента управления 2 на publi c):
private void button1_Click(object sender, EventArgs e)
{
(Parent as Form1).userControl21.Hide();
}
Вы также можете думать о чем-то вроде этого: (тогда вам не нужно измените модификатор доступа USerControl2 на publi c)
в Form1:
public void HideUserControl2()
{
userControl21.Hide();
}
и в UserControl1 button_click:
private void button1_Click(object sender, EventArgs e)
{
(Parent as Form1).HideUserControl2();
}