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:
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:
public static string TxtVal = "";//公共的静态变量。可以不示例就访问。 private void button2_Click(object sender, EventArgs e) { TxtVal = this.textBox1.Text; Form3 frm = new Form3(); frm.Show(); }
Form3:
public partial class Form3 : Form { public Form3() { InitializeComponent(); ShowPara(); }
public void ShowPara() { this.label1.Text = Form1.TxtVal; } }
另外。还可以通过事件来传参数。 这种方式的好处是可以使解耦两个form之间的关联。
1.先定义一个中间模块(Observer类库),用来处理两个FORM中关系。
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代码
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代码
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
WinForm 窗体间参数传递的更多相关文章
- 小例子(二)、winform窗体间的关系
写一个关于winform窗体间的关系 1.登陆,思路:登陆后隐藏登陆窗体,关闭Form2时结束整个应用程序. //登陆窗体 private void button2_Click(object send ...
- C# winform窗体间传值(使用委托或事件)
窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...
- WinForm 窗体间传递数据
前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...
- winform 窗体间传值
WinForm 两窗体之间传值实例 2010-12-27 22:10:11| 分类: 学业|举报|字号 订阅 下载LOFTER我的照片书 | 窗体Form1和Form2 Form2 ...
- WinForm窗体间如何传值
窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...
- WinForm窗体间如何传值的几种方法
(转) 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点: ...
- winform窗体间利用委托传值(一)
前台:在winform窗体Form1放入pictureBox1 后台代码: namespace 点击小图变成大图 { public delegate void ClickDelegateHander( ...
- (C#)WinForm窗体间传值
1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int v ...
- WinForm窗体间传值
1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int val ...
随机推荐
- 43. Multiply Strings 字符串表示的大数乘法
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- textBaseline
<!DOCTYPE html><html><body> <canvas id="myCanvas" width="400&quo ...
- Oracle12c中性能优化&功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护
Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效. 1. 设置 下面的例子演示带全局索引的表创建和加载数据的过程. -- ...
- 上传xslx文件设置accept的MIME 类型
.dotx:application/vnd.openxmlformats-officedocument.wordprocessingml.template.docx:application/vnd.o ...
- ESET Smart Security 免费60天
领取地址:http://goo.gl/aEl2Xy 兑换地址:http://goo.gl/h1n62K
- Crystal Report Error: Either the Crystal Reports registy key permission are insufficient or the Crystal Reports runtime is not installed correctly
在64位 Windows 7中水晶报表的错误: Crystal Report Error: Either the Crystal Reports registy key permission are ...
- mysql的字符拼接
在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,concat ...
- makefile的一个错误:*** missing separator
原文转自:http://blog.sina.com.cn/s/blog_87c063060101c9yp.html 1.在写 多目录下makefile的时候,碰到一个错误提示,让我纠结许久,后面还是解 ...
- Android输入法框架系统(下)
程序焦点获取事件导致输入法显示 从上面可以知道程序获得焦点时,程序端会先间接的调用IMMS的startInput将焦点View绑定到输入法,然后会调用IMMS的windowGainFocus函数,这个 ...
- Java eclipse Myeclipse tomcat安装及配置
Java eclipse Myeclipse tomcat安装及配置作者:天涯 来源:中国自学编程网 发布日期:1223857747目前,开发Java网页程序,最流行的就是用Myeclipse来进行编 ...