EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

C#子窗体如何返回值给父窗体(方法:把A窗体整个传递给B窗体)

有些时候需要在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";
}

 

 

 

参考来源:

https://www.jb51.net/article/146831.htm

This article was last edited at 2020-08-22 01:38:03

* *