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. 76. Minimum Window Substring *HARD*

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  2. UVALIve 5987 素数

    题目链接:Distinct Primes 如果一个数.至少有三个因子是素数..那么这个数就是prime num.30和42是前两个prime num.问你第n个这种数是谁.(1<=n<=1 ...

  3. HDU 1714 math

    #include<stdio.h>#include<string.h>#include<iostream>#include<iomanip>#inclu ...

  4. Awk 从入门到放弃 (6) Awk模式(Pattern)之二

    第一题:从/etc/passwd 匹配以 vmuser开头的用户 grep “^vmuser”   /etc/passwd  -r  -n awk  ‘/^vmuser /{print $0}’  / ...

  5. Winform中用comboBox来选择显示Dataset中表格数据

    这是一次偷懒的尝试,因为每次都必须打开代码,调试才能看见数据,发现问题.也是借鉴了调试中查看dataset数据的模式,查看不同表格.经历一番研究,总算实现了想要的效果了,故作此一笔记.与人共享. 界面 ...

  6. tp 缓存,前台提速

  7. LSTM神经网络

    LSTM是什么 LSTM即Long Short Memory Network,长短时记忆网络.它其实是属于RNN的一种变种,可以说它是为了克服RNN无法很好处理远距离依赖而提出的. 我们说RNN不能处 ...

  8. Windows Phone 8, 添加Map控件

    摘要: 1. 添加Map控件到程序. 2. 在Map控件中显示您当前的位置. 内容: 首先在WMAppManifest.xml中的Capabilities选项卡中勾选如下两项:ID_CAP_MAP, ...

  9. ODBC 安装/使用/编程

    前言: 主要讲解ODBC API, 以mysql为例, 从配置到安装, 再到具体的编程, 以期对ODBC有个初步的认识. *) 下载mysql, 选择社区版mysql, 并安装 http://dev. ...

  10. 【opencv基础】imread-第二个参数

    问题1: 显示的是灰色的界面,不能正常显示图像. 解决方法:在imshow之后加上waitKey即可.原因here: Note:This function should be followed by ...