Как получить доступ к одному элементу управления Windows Forms из другого Windows Forms? - PullRequest
1 голос
/ 28 ноября 2011

Предположим, я создаю форму окна Form.cs. Он имеет несколько элементов управления (label1, label2, button1, button1 и т. Д.). Я также создаю новую форму окна New_Form.cs в Form.cs. Теперь я хочу получить доступ к label1, label2, button1 в New_Form.cs. Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Я не хочу быть оскорбительным, но я думаю, что использование контроля из другой формы не очень хороший дизайн.

По моему мнению, нехорошо соединять один класс (в этом вопросе form1) с внутренней реализацией другого класса (элементы управления `form2 '. Если у вас по какой-то причине есть Чтобы изменить внутренний дизайн (например, отображение данных с другим элементом управления) этого класса, вам также нужно изменить другой класс, что делает кодирование (и, конечно, поиск ошибок) довольно трудным.

Если есть необходимость обмена данными между двумя классами, я бы предпочел использовать для этого свойства Publioc. Во внутренней конструкции вы можете прикрепить их к элементу управления, но тогда эта «муфта» останется в том же классе)

1 голос
/ 28 ноября 2011

Вы можете получить доступ к необходимым свойствам, указав их как общедоступные свойства в форме Parent. Не уверен, почему вам нужна кнопка, если вы хотите, чтобы какая-то вещь выполнялась для щелчка, тогда вы должны инкапсулировать логику в отдельные методы, и они делают вызов.

Если вам нужно передать меньше деталей, создайте конструкторы для новой формы, которые бы принимали эти значения

ChildForm child = new ChildForm([label1], [label2])

или

ChildForm child = new ChildForm([parent form reference]) // so you could access require components
1 голос
/ 28 ноября 2011

Хотя это может быть плохой дизайн, вы можете получить доступ к свойствам в другой форме, сделав их общедоступными, а затем получить к ним доступ следующим образом:

Form1 frm = new Form1();
Form1.button1.Visible = false;

Также вот страница MSDN, относящаяся к вашему вопросу

http://msdn.microsoft.com/en-us/library/f6525896%28v=vs.90%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...