前言
小编最近维护一个Winfrom窗体,是项目中CS端的主窗体,很多子窗体需要从主窗体获取值,同时子窗体还需要给主窗体回传值,下面来给大家介绍一下。
正文
本文中以主窗体为frmMain,子窗体为frmGroup ,两窗体之间的传值来做示例。
方式一: 使用公共静态变量传值
主窗体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";
}
特点 : 双向传值,实现简单
缺点: 静态变量在类加载的时候分配内存,存储于方法区,一般不会被销毁,在系统不够内存情况下会自动回收静态内存,这样就会引起访问全局静态错误。
方式二: 使用公共变量传值
主窗体frmMain中代码
public partial class frmMain : Form
{
//声明工位ID 为公共变量
public string terminalID = "";
//给变量赋值
terminalID = "q13bh01-bh12";
//单击‘行为'按钮的时候会给窗体传值
private void btnGroup_Click(object sender, EventArgs e)
{
frmGroup frmGro = new frmGroup();
//变量传值 ,注意顺序写在ShowDialog()方法之前
frmGro .stationID = this.terminalID;
frmGro .ShowDialog();
}
}










