首页 > 代码库 > WinForm 参数传递
WinForm 参数传递
http://www.cnblogs.com/xinjian/archive/2011/09/15/2177851.html
本人刚刚接触Winform ,学习之后分享下心得。
winform 窗体与窗体之间参数的传递常规的有两种
1.构造函数传参。即重载第二个窗体的构造函数,把需要传的参数写入第二个窗体的构造函数。代码如下:
Form1:
private void button1_Click(object sender, EventArgs e) { string txt = this.textBox1.Text; Form2 frm = new Form2(txt);//带入构造函数 frm.Show(); }
Form2:
View Code
public partial class Form2 : Form { private string TxtVal = null;//上一窗体带过来的值 public Form2(string txt) //重载构造函数 { this.TxtVal = txt;//获取传过来的值 InitializeComponent();
//显示,用于测试 ShowPara(); }
public Form2() { InitializeComponent(); }
public void ShowPara() { this.label1.Text = this.TxtVal; }
}
2. 全局变量传参数。即 第二个窗体通过获取第一个窗体的全局变量的值。来达到传参的目的。代码如下:
Form1:
View Code
public static string TxtVal = "";//公共的静态变量。可以不示例就访问。 private void button2_Click(object sender, EventArgs e) { TxtVal = this.textBox1.Text; Form3 frm = new Form3(); frm.Show(); }
Form3:
View Code
public partial class Form3 : Form { public Form3() { InitializeComponent(); ShowPara(); }
public void ShowPara() { this.label1.Text = Form1.TxtVal; } }
另外。还可以通过事件来传参数。 这种方式的好处是可以使解耦两个form之间的关联。
1.先定义一个中间模块(Observer类库),用来处理两个FORM中关系。
View Code
namespace Observer { /// <summary> /// 定义一个信息委托 /// </summary> /// <param name="sender">发布者</param> /// <param name="msg">发送内容</param> public delegate void MsgDlg(object sender,object msg);
public class MidModule { /// <summary> /// 消息发送事件 /// </summary> public static event MsgDlg EventSend;
public static void SendMessage(object sender, object msg) { if (EventSend != null)// { EventSend(sender, msg); } } }
2.Form1代码
View Code
public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { string txt=this.textBox1.Text; Form2 frm = new Form2(); frm.Show();
MidModule.SendMessage(this, txt);//发送参数值 } }
3. Form2代码
View Code
public partial class Form2 : Form { public Form2() { InitializeComponent();
//订阅了信息发送事件,即接受参数值 MidModule.EventSend+=new MsgDlg(MidModule_EventSend); }
//接受参数后具体干啥的实现 private void MidModule_EventSend(object sender, object msg) { if (sender != null) { this.label1.Text = msg.ToString(); } }
}
这样就很神奇的完成了传参的步骤。
参考:http://topic.csdn.net/u/20100112/12/34f6d852-fd02-474f-bfc4-621c6baa35a8.html
Demo下载
WinForm 参数传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。