有些时候需要在B窗体里对A窗体的某个控件值做修改,并且需要立即改变A窗体的控件显示,本方法适合这种情况。
修改FormA,把要在B里处理的控件的可访问性(Modifiers)设为public,然后按下面的方式处理:
class FormA
{
public void ShowB()
{
FormB fb=new FormB(this); // 在构造函数里把A窗体本身传过去
fb.Show();
}
}
class FormB
{
FormA fm; //B窗体增加一个FormA类型的成员
public FormB(FormA fm) //添加一个带参数的构造方法,参数类型是FormA
{
this.fm=fm;
}
protected void Method1()
{
fm.txtName.Text="Haha!"; //在这儿可以直接操作A窗体里的控件了!
}
}
但实际上,在.NET Framework 4.7.2 这个似乎并不奏效。
还有另一种方法:
主体frmMain里面的代码:
public partial class frmMain : Form
{
//声明工位ID 为公共静态变量
public static string terminalID = "";
//给静态变量赋值
terminalID = "q13bh01-bh12";
}
子窗体frmGroup中代码:
private void frmGroup_Load(object sender, EventArgs e)
{
this.txtTerminalID.Text= frmMain.terminalID.Trim();
//可以再赋值给静态成员,方便其他窗体调用
frmMain.terminalID = "q13bh01-bh11";
}
参考来源: