访问标签从另一个类

问题描述:

Possible Duplicate:
Best way to access a control on another form in WinForms?访问标签从另一个类

我知道这是一个眩目的明显的问题,但我一个C#新手,觉得有点混乱,所以任何帮助,将不胜感激......

我有一个mainform和第二个表单,我们称它为form2。 form2上有一些标签。我想从mainform class/cs表格中控制这些标签的文本。无论我尝试什么,我似乎都无法访问它们。我已经把它们中的一部分公布了,我仍然无法在“mainform”类中“看到”它们。

mainform是wpf(就像项目一样)。 form2是一个常规的winform。

如果有人会帮助我,我会永远感激。

感谢,

+2

http://*.com/questions/8566/best-way-to-access-a-control-on-another-form -in-winforms – 2012-01-12 10:40:51

+0

谢谢Uwe,我已经那么做了,并且不理解它。 – sotiris 2012-01-12 10:47:22

+0

如果你不明白[“创建一个属性”](http://*.com/a/8573/366904),现在是时候得到一本关于C#的书并学习语言...... – 2012-01-12 10:53:38

和你的标签是私有的,它们可以从只有所有者的形式访问。不要试图将它们改为公开,这是一种错误的做法(公众成员是邪恶的)。

添加一个更新标签的公共方法,以便从第二个表单中访问它。

窗口2:

public void SetTextForLabel(string myText) 
{ 
    this.myLabel.Text = myText; 
} 

的MainForm:

myForm2Instance.SetTextForLabel("my text"); 
+0

谢谢ken,当我把你在mainform中建议的代码放到“SetTextForLabel”下面时,会出现一条红色的波浪线,并出现以下错误:错误'System.Windows.Forms.Form'不包含' SetTextForLabel“,并且没有找到接受类型为”System.Windows.Forms.Form“的第一个参数的扩展方法”SetTextForLabel“(您是否缺少using指令或程序集引用?) – sotiris 2012-01-12 10:55:26

+0

错误消息表示您正在尝试使用一个“Form”类型的实例,而不是你自己的“Form2”类型。在你的错误周围发布几行,以便我们帮助... – ken2k 2012-01-12 11:04:19

+0

谢谢Ken。在类的顶部,我声明了表单 - public static Form WaitFormV; ---然后在一个进度改变的事件进一步下来,我有--- WaitFormV = new DBWaitForm(); WaitFormV.ShowDialog(); WaitFormV.SetTextForLabel(“my text”); – sotiris 2012-01-12 11:13:29