我在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()
将重新开始答案 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;
}
}