按钮单击C#后刷新另一种形式的标签文本

时间:2015-04-10 01:47:17

标签: c# forms

我在1个解决方案中有2个项目,每个项目有1个表单。在表格1中我有标签和按钮,我想当我点击按钮时它将以表格1中的表格2标签文字显示。

表单1中的代码:

WindowsFormsApplication1.Form1 layarForm1 = new WindowsFormsApplication1.Form1();
layarForm1.Show();
layarForm1.LabelText = no_antrian.Text;
//layarForm1.LabelText = this.Refresh();

form2(在其他项目中但在相同的解决方案中,我参考了表单1):

public string LabelText
    {
        get
        {
            return this.ruang_1.Text;
        }
        set
        {
            this.ruang_1.Text = value;
        }
    }

我的代码第一次工作,但当我再次点击按钮时,它将显示新的表单。是否有任何方法可以在按钮单击后刷新表单2中的标签文本。而且我不想使用处理表单,因为在表单2中我播放了视频,如果我使用dispose()和show()

将重新开始

2 个答案:

答案 0 :(得分:0)

两个项目= 2个可执行文件,您需要使用共享内存或命名管道将数据从一个exe文件发送到另一个exe文件,或者一旦获得另一个窗口的窗口句柄并找到子窗口,就使用SendMessage等winapi通过EnumChildWindows处理。

为什么不在同一个项目中使用这两种形式?

答案 1 :(得分:0)

问题是每次单击按钮时,都会创建表单实例。您需要检查表单是否已打开,如果没有创建实例,请显示表单并更新标签。

如果表单已经打开,您只需要更新标签并将焦点设置在表单上。

您可以使用Application.OpenForms遍历所有表单并检查表单是否在该集合中。

这样的东西
foreach (Form frm in WindowsFormsApplication1.OpenForms)  
{  
    if (frm.Name == "MY_FORM_NAME") then
       frm.LabelText = no_antrian.Text;
    else
    {
        WindowsFormsApplication1.Form1 layarForm1 = new       
        WindowsFormsApplication1.Form1();
        layarForm1.Show();
        layarForm1.LabelText = no_antrian.Text;
    }
}