更改已从另一个方法打开的表单上的标签文本

时间:2012-09-27 16:00:16

标签: c# winforms

我需要更改已打开的C#Winform上的标签文本。表单是从我的程序中的不同方法打开的,因此它已经打开,我在第一次创建表单时无法访问表单的原始引用。

我尝试在下面的代码中执行此操作,但我无法访问表单上的标签。有没有办法可以更改已经运行的表单(来自另一个方法)的标签?

//http://stackoverflow.com/questions/3861602/c-sharp-how-check-if-the-form-is-already-open-and-close-it-if-it-does
Form fc = Application.OpenForms["form1"];

if (fc != null)
{
     //This does not work.  I can not access the lblNewItems label.
     //The label has it's public modifier set to Public and I am able
     //to set this label successfully when I create the form originally
     //from the other method.

     fc.lblNewItems.Text = "Change text"; 
}

编译以上内容时,我收到以下错误:

  

错误4'System.Windows.Forms.Form'不包含。的定义   'lblNewItems'并没有扩展方法'lblNewItems'接受第一个   可以找到类型'System.Windows.Forms.Form'的参数(是吗?   缺少using指令或程序集引用?)

有人可以告诉我是否可以这样做,如果可以的话;如何更改已从其他方法打开的表单上的标签?

2 个答案:

答案 0 :(得分:4)

您的问题是fc的类型为Form,而您的标签lblNewItems实际上位于Form的某个子类上(我猜你的班级是{{ 1}}基于问题)。在尝试访问其元素之前,您需要将Form1强制转换为实际的表单类型:

fc

答案 1 :(得分:1)

  

表单是从我的程序中的不同方法打开的,所以它是   已打开,我无法访问原始参考   在首次创建时形成。

在Program.cs中创建对表单的公共静态引用,以便您可以从任何方法访问它,只需在设置标签文本之前检查Null。