如何从另一个Windows窗体访问一个Windows窗体控件?

时间:2011-11-28 05:07:18

标签: c# winforms

假设我创建了一个窗口表单Form.cs。它有一些控件(label1,label2,button1,button1等)。我还在New_Form.cs下创建了一个新窗口Form.cs。现在我想访问New_Form.cs中的label1,label2,button1。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

我不想冒犯,但我认为使用其他形式的控制并不是一个好的设计。

在我的观点中,将一个类(在这个问题form1)中与另一个类的内部实现结合起来是不好的(`form2'的控件。如果你,对于某些人原因,必须改变该类的内部设计(例如,显示具有不同控件的数据),你必须改变其他类。这使得编码(当然还有错误搜索)非常困难。

如果需要在两个类之间交换数据,我更倾向于使用publioc属性。在内部设计中,您可以将它们附加到控件,但是这个“耦合”保持在同一个类中)

答案 1 :(得分:1)

虽然这可能是糟糕的设计,但您可以通过将其公开,然后像这样访问它们来访问另一个表单中的属性:

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

此处还有一个与你的问题有关的msdn页面

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

答案 2 :(得分:1)

您可以通过在Parent表单中将其设置为公共属性来访问所需的属性。不确定为什么你会想要按钮,如果你想为点击执行一些事情,那么你应该将逻辑封装到不同的方法中并且他们进行调用。

如果要传递的细节较少,则为新表单创建构造函数,以接受这些值

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

ChildForm child = new ChildForm([parent form reference]) // so you could access require components