Есть несколько стратегий, которые вы можете использовать для достижения связи / связи между объектами в разных формах. Примечание. Мой ответ здесь не будет касаться каких-либо проблем, конкретно связанных с DockPanelSuite, и не будет рассматривать разницу между «вторичными» формами, которые являются «независимыми» (то есть они не «принадлежат» MainForm) или сделал дочерние формы MainForm. Это сознательный выбор, сделанный на основе убеждения, что то, о чем вы спрашиваете, не зависит от этих возможных вариаций в реализации.
- Самая простая стратегия (если она утомительна для большого количества элементов управления) - объявить Открытые свойства в ваших вторичных формах, которые предоставляют элементы управления, которыми вы хотите манипулировать из своей Основной формы. Например, предположим, что в Form2 есть кнопка, и вы хотите обработать событие click в основной форме:
В Form2 определите свойство как:
public Button form2Button
{
get { return button1; }
}
Теперь в событии Load вашей главной формы, предполагая, что именно там создается экземпляр Form2, вы можете подписаться на событие Click кнопки в Form2:
Form2 myForm2;
Form3 myForm3;
private void Form1_Load(object sender, EventArgs e)
{
myForm2 = new Form2();
myForm2.form2Button.Click += new EventHandler(form2Button_Click);
myForm3 = new Form3();
}
И вы можете легко представить, что в Form3 у вас есть TextBox, который вы открыли с помощью Public Property, точно так же, как вы открыли Button в Form2.
Таким образом, вы можете реализовать обработчик событий MainForm, например, для нажатия кнопки на Form2:
public void form2Button_Click(object sender, EventArgs e)
{
// do something here with the TextBox on Form3
// myForm3.theTextBox.Text =
}
... другие стратегии ...
в вашей вторичной форме, например, нажатие кнопки может инициировать публичное событие, на которое может подписаться основная форма (или любая другая сущность, которой подвергается Form2), а затем отправлять соответствующее что угодно соответствующей цели .
вы можете абстрагировать передачу сообщений в целом на более высоком уровне в один (возможно, статический) класс, куда издатели отправляют сообщения, а сообщения отправляются зарегистрированным слушателям.
Наконец, обсуждение может быть интересным для вас:
Использование элементов управления одной формы в другую
лучший,