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 ...
随机推荐
- 安全模式下卸载windows installer打包的软件(转)
安全模式下卸载windows installer打包的软件 起因: 主机系统MAC,虚拟软件Parallels Desktop, 虚拟系统 Win 7. 今天在虚拟机WIN7里面安装了某个软件导致重启 ...
- delphi image控件上画矩形的问题
画的时候发现鼠标点的位置和矩形的位置有偏移 后来查看发现是由于image控件时stretch属性设置为true,这样在画的时候是缩放了的 也就是画到image显示的图片上去了 所以如果要画矩形,要按照 ...
- struts2返回json字符串
参考链接:http://www.cnblogs.com/starsli/p/4733669.html 1.通过使用struts2-json-plugin 插件来实现 2.通过收到使用json-lib提 ...
- C++面向对象多线程入门
第1节 背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍. 早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序.在大型机年代,计算能力是一种宝贵资源.对于资 ...
- L1-041 寻找250
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字. 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”. ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄-4WD智能小车
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 前面已介绍X-CTR100控制器解码PS2无线手 ...
- xcode cocos2dx升级
原文转自:http://www.codeo4.cn/archives/690 cocos2d-x的安装脚本里没有升级的脚本,我们如果在新版本安装的时候加上参数:-f 强制安装也没有能完全解决问题.新建 ...
- Mysql命令insert into:向表中插入数据(记录)
insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...
- shell 数学运算总结
# !/bin/bash ## 整数-算数运算 ### 1. expr r=`expr 4 + 5` ### Tips:1. '4''+''5'三者之间有空白 echo $r; r=`expr 4 \ ...
- sql,用 ISNULL(), NVL(), IFNULL() and COALESCE() 函数替换空值
在数据库操作中,往往要对一些查询出来的空值进行替换,如函数SUM(),这个函数如果没有值会返回NULL,这是我们不希望看到的, 在MySQL中我们可以这样来写: ) ... 在SQLSERVER中我们 ...