C#在另一个类中使用winform控件

时间:2010-11-09 13:00:31

标签: c# winforms controls

我有一个WinForm应用程序。在主窗体上有许多控件,例如标签,文本框等。

如果我在同一个程序集中有另一个类,我该如何访问这些控件?

例如,从我的新课程,我想更新Form1中的标签?

5 个答案:

答案 0 :(得分:10)

在标签(或任何控件)的属性中,将“Modifiers”选项设为“Public”

现在您可以从表单

的对象访问标签
 Form1 f = new Form1()
 f.lblMyLabel.Text = "My Text"

答案 1 :(得分:3)

从另一个类/表单中选择要访问的控件。转到其属性并将其修饰符值设置为“internal”(如果您只想在同一个程序集中使用它)。

现在在同一个程序集中你想要使用它只需创建一个像

这样的表单的对象
myForm objform = new myForm();
objform.txtName.Text="any text";

然后你可以使用objform.show()显示该表单;或objform.showdialog();

但我认为这不会解决您的问题,因为我觉得您的表单已经在屏幕上显示,并且您希望更改其标签/文本框值的其他表单/类 因此,您必须获取当前形式的对象,否则它将不会显示当前显示形式的任何更改。

所以我认为单身模式会给你完美的解决方案。 只需创建类,并在该类中创建该表单的静态对象,然后创建一个静态函数,并检查对象是否已经初始化,不初始化它,并使用现有的,否则初始化它。

还存在许多其他解决方案,例如通过创建公共属性,但您必须使用当前显示表单的相同对象的引用来查看更改反映到当前显示的表单

答案 2 :(得分:2)

一种方法是在Form1类中创建公开属性,公开您尝试修改的控件

例如,如果您的Label在设计器中名为label1,那么您可以执行以下操作:

public Label MyForm1Label { get { return label1; } }

答案 3 :(得分:1)

除了已经提到的解决方案之外,您可以为您的表单创建一些公共方法,以提供所需的功能(如果某些更改必须在多个控件中显示,可能会很好 - 您的其他类不必记住哪些一个要改变)

public void SetSomething(int value)
{
   Control1.value = value;
   Control2.value = value;
   ...
}

答案 4 :(得分:-1)

最简单的方法是使用:

Form1 f =新的Form1()  f.lblMyLabel.Text =“我的文本”

因此,您必须将Form1标签“ lblMyLabel”设置为仅公开。我已经用richTextBox完成了。

enter image description here