转:c#委托事件实现窗体传值
2013-07-15 22:34
369 查看
效果图下如下:开始启动的是窗口1,打开窗口2后,在窗口1中textBox1开始输入,窗1中的内容同时显示在窗2 textBox1中。
要想在窗口2中显示窗1的信息,首先,要建立一个刷新窗2中textBox1的方法,如下:
有了方法后,就要考虑第二个问题,如何把窗1传中的东西传过来,靠什么传?
这就要建卡一个事件,靠事件来生成要传送的数据,然后通过委托来传递到窗2,所以要建卡一个委托,这个委托带个参数,参数值就是窗1中
textBox1的值
建立后事件后,最后一件事就是要注册事件并且订阅消息(我也是半懂,仅为自我理解需要)
事件激发后,就差最后一步了,就是把这个“信”给送到窗2中,在哪里地方传出去。
考虑到窗1与窗2的联系方式有一个,就是在窗1中打开窗2,那就在这里“报信”吧,
运行程序,就能实现上面的效果啦。
不过这里也有个问题,如果没有打开窗2,直接在窗1中(第一次中,如果窗口2打开后关闭又不会报错)输入内容,就会出现未将对你引用到实例的错误,求解中。
要想在窗口2中显示窗1的信息,首先,要建立一个刷新窗2中textBox1的方法,如下:
public void updatetxt(string txt) { this.textBox1.Text = txt; }
有了方法后,就要考虑第二个问题,如何把窗1传中的东西传过来,靠什么传?
这就要建卡一个事件,靠事件来生成要传送的数据,然后通过委托来传递到窗2,所以要建卡一个委托,这个委托带个参数,参数值就是窗1中
textBox1的值
public delegate void updatertxts(string s); public event updatertxts udtxt;
建立后事件后,最后一件事就是要注册事件并且订阅消息(我也是半懂,仅为自我理解需要)
//注册事件 private void textBox1_TextChanged(object sender, EventArgs e) { try { udtxt(((TextBox)sender).Text);//不一定需要这个,直接取值即可 } catch (SystemException err) { MessageBox.Show(err.Message); } }
事件激发后,就差最后一步了,就是把这个“信”给送到窗2中,在哪里地方传出去。
考虑到窗1与窗2的联系方式有一个,就是在窗1中打开窗2,那就在这里“报信”吧,
private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); udtxt += new updatertxts(form2.updatetxt); form2.Show(); }
运行程序,就能实现上面的效果啦。
不过这里也有个问题,如果没有打开窗2,直接在窗1中(第一次中,如果窗口2打开后关闭又不会报错)输入内容,就会出现未将对你引用到实例的错误,求解中。
if (udtxt != null)//这样写就好了 udtxt(((TextBox)sender).Text);
相关文章推荐
- C#的委托事件在winform窗体中实现传值备忘
- 转:c#委托事件实现窗体传值通信
- C#的委托事件在winform窗体中实现传值备忘
- C#使用委托创建事件实现两个窗体间通信
- C# winform窗体间传值(使用委托或事件)
- 图解C#利用委托实现窗体传值
- C#利用事件与委托进行窗体间传值简单小例子
- c# winfrom 委托实现窗体相互传值
- 委托、事件--实现窗体传值!
- c# 用委托和事件实现不同窗体间的通讯(二)
- 使用委托实现窗体之间的传值--事件订阅实现传值
- C# winform窗体间传值(使用委托或事件)
- C#中使用委托创建事件实现两个窗体间通信
- C# 利用委托实现窗体间传值
- winform C#的委托事件在winform窗体中传值,也可用于刷新另一窗体(窗体A刷新窗体B)
- c# 用委托和事件实现不同窗体间的通讯(一)
- C# 利用委托实现窗体间传值
- 【C#】使用委托实现窗体传值
- c# 用委托和事件实现不同窗体间的通讯
- c# 用委托和事件实现不同窗体间的通讯(一)