Прежде всего, вы не должны устанавливать элементы управления как синглтоны.
Во-вторых, вы должны знать границы родитель-дети.
Ваш родитель - это Форма. Форма имеет две детские - панели. Панель 1 имеет еще двух детей - ваш пользовательский контроль и кнопку. В вашем пользовательском контроле есть другие дети - кнопка.
Итак, если вы хотите поместить что-то на панель два из usercontrol1, у вас есть как минимум два варианта:
Плохой путь.
Это плохой способ , и вы не должны этого делать, поскольку он строго связывает и связывает ваш пользовательский контроль с вашей формой.
Вы должны получить родительский элемент от своего пользовательского элемента управления (который является панелью), затем получить родительский элемент из этой панели (который является формой) и затем посмотреть другую панель.
Хороший путь.
Просто и хорошо. Добавьте обработчик событий в свой usercontrol, например:
public UserControl1: UserControl
{
открытое событие EventHandler ButtonClicked;
}
, а затем нажмите кнопку в пользовательском элементе управления:
ButtonClicked?.Invoke(this, EventArgs.Empty);
Затем вам нужно зарегистрировать основную форму для этого обработчика:
UserControl1.ButtonClicked += (s, e) =>
{
//show usercontrol2 on your panel.
}
Вы должны прочитать больше об делегатах и событиях в C #.