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

Demo下载

WinForm 窗体间参数传递的更多相关文章

  1. 小例子(二)、winform窗体间的关系

    写一个关于winform窗体间的关系 1.登陆,思路:登陆后隐藏登陆窗体,关闭Form2时结束整个应用程序. //登陆窗体 private void button2_Click(object send ...

  2. C# winform窗体间传值(使用委托或事件)

    窗体间传值 今天得空,刚好看到网上好多人再找winform窗体间传值的问题,由于昨天项目的优化的感觉不错,就写了个C# winform窗体间传值的demo,希望能给需要的人的带来帮助: 工程的源代码地 ...

  3. WinForm 窗体间传递数据

    前言 做项目的时候,winfrom因为没有B/S的缓存机制,窗体间传递数据没有B/S页面传递数据那么方便,今天我们就说下winfrom中窗体传值的几种方式. 共有字段传递 共有字段传递实现起来很方便, ...

  4. winform 窗体间传值

    WinForm 两窗体之间传值实例 2010-12-27 22:10:11|  分类: 学业|举报|字号 订阅     下载LOFTER我的照片书  |     窗体Form1和Form2 Form2 ...

  5. WinForm窗体间如何传值

    窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点:传值是双 ...

  6. WinForm窗体间如何传值的几种方法

    (转) 窗体间传递数据,无论是父窗体操作子窗体,还是子窗体操作符窗体,有以下几种方式: 公共静态变量: 使用共有属性: 使用委托与事件: 通过构造函数把主窗体传递到从窗体中: 一.通过静态变量 特点: ...

  7. winform窗体间利用委托传值(一)

    前台:在winform窗体Form1放入pictureBox1 后台代码: namespace 点击小图变成大图 { public delegate void ClickDelegateHander( ...

  8. (C#)WinForm窗体间传值

      1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int v ...

  9. WinForm窗体间传值

    1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int val ...

随机推荐

  1. 43. Multiply Strings 字符串表示的大数乘法

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  2. textBaseline

    <!DOCTYPE html><html><body> <canvas id="myCanvas" width="400&quo ...

  3. Oracle12c中性能优化&amp;功能增强新特性之全局索引DROP和TRUNCATE 分区的异步维护

    Oracle 12c中,通过延迟相关索引的维护可以优化某些DROP和TRUNCATE分区命令的性能,同时,保持全局索引为有效. 1.   设置 下面的例子演示带全局索引的表创建和加载数据的过程. -- ...

  4. 上传xslx文件设置accept的MIME 类型

    .dotx:application/vnd.openxmlformats-officedocument.wordprocessingml.template.docx:application/vnd.o ...

  5. ESET Smart Security 免费60天

    领取地址:http://goo.gl/aEl2Xy 兑换地址:http://goo.gl/h1n62K

  6. 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 ...

  7. mysql的字符拼接

    在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,concat ...

  8. makefile的一个错误:*** missing separator

    原文转自:http://blog.sina.com.cn/s/blog_87c063060101c9yp.html 1.在写 多目录下makefile的时候,碰到一个错误提示,让我纠结许久,后面还是解 ...

  9. Android输入法框架系统(下)

    程序焦点获取事件导致输入法显示 从上面可以知道程序获得焦点时,程序端会先间接的调用IMMS的startInput将焦点View绑定到输入法,然后会调用IMMS的windowGainFocus函数,这个 ...

  10. Java eclipse Myeclipse tomcat安装及配置

    Java eclipse Myeclipse tomcat安装及配置作者:天涯 来源:中国自学编程网 发布日期:1223857747目前,开发Java网页程序,最流行的就是用Myeclipse来进行编 ...