贵州城乡建设部网站首页,外贸电商网站建设,福州专业的seo软件,wp大学wordpress创建数据库前言 做项目的时候#xff0c;winfrom因为没有B/S的缓存机制#xff0c;窗体间传递数据没有B/S页面传递数据那么方便#xff0c;今天我们就说下winfrom中窗体传值的几种方式。 共有字段传递 共有字段传递实现起来很方便#xff0c;就是在窗体类中加个共有字段属性#xff… 前言 做项目的时候winfrom因为没有B/S的缓存机制窗体间传递数据没有B/S页面传递数据那么方便今天我们就说下winfrom中窗体传值的几种方式。 共有字段传递 共有字段传递实现起来很方便就是在窗体类中加个共有字段属性 1 public string Msg
2 {
3 get
4 {
5 return this.textBox1.Text.Trim();
6 }
7 } 调用代码 1 public Form2(Form1 f1)
2 {
3 InitializeComponent();
4 this.label1.Text f1.Msg;
5 } 就这么简单共有字段传递其实只是一种可以传递数据的方式但不希望采用这种方式除非一些窗体是要做传值的比如一些信息弹窗可以采用这种方式。 构造传递 构造传递一般是我们做项目常用的一种就像对象传值一样我们只要在构造方法中添加参数即可。 1 public Form2(string msg)2 {3 InitializeComponent();4 this.label1.Text msg;5 }6 7 private void button1_Click(object sender, EventArgs e)8 {9 Form2 f2 new Form2(this.textBox1.Text.Trim()); //调用
10 f2.Show();
11 } 委托与事件传递 上面说的两种方式都是由父窗体传值给子窗体还有一种方式是子窗体传值给子船体这种方式一般采用委托和事件传递我们来做个示例看下。 我们先建一个委托参数是string 1 public delegate void selectChangedHandler(string s); 在传值中我们需要第二种方式来传递一个对象集合首先我们建一个数据传递集合 1 public class CallObject2 {3 public string callMessage ;4 public event selectChangedHandler selectChangedEvent;5 6 public void callEvent(string s)7 {8 this.selectChangedEvent(s);9 }
10 } 集合包含两个部分一个是返回信息对象一个是事件对象这些其实以便子窗体调用来得到从子窗体中传递过来的数据事件定义好了就得有事件处理方法 1 public void co_selectChangedEvent(string s)
2 {
3 this.txtF2Select.Text s;
4 } 我们看下父窗体的调用方法 1 private void btnCallForm2_Click(object sender, EventArgs e)
2 {
3 CallObject co new CallObject();
4 co.selectChangedEventnew selectChangedHandler(co_selectChangedEvent);
5 Form2 f2 new Form2(co);
6
7 f2.ShowDialog();
8 txtEventResult.Text Form2传的信息 co.callMessage;
9 } 这边主要是给事件注册从父窗体中我们就可以推断出子窗体是怎么调用的通过构造方法得到对象集合然后触发事件就可以了。 1 private CallObject co;2 public Form2(CallObject cov):this()3 {4 this.co cov;5 }6 7 private void rb_A_CheckedChanged(object sender, EventArgs e)8 {9 co.callEvent(A);
10 } 运行效果 下面传值给父窗体的值需要关闭子窗体父窗体再可以得到上面的可以实时传递。 程序下载窗体间传递数据.rar 附录小菜学习编程-Winform系列初学者 后记 其实上面第一种并不能说是一种好的方式就像说模式常用并且可以解决问题的解决方案称为模式开门有几种方式拿钥匙开门和撬门我们常用的是第一种并称为一种开门模式并不是说第二种就不是了只不过我们不常用适合一些特殊的情况比如忘记拿钥匙了就是这个意思。 本文转自田园里的蟋蟀博客园博客原文链接http://www.cnblogs.com/xishuai/p/3549242.html如需转载请自行联系原作者