窗体间传值(委托)
2018-06-18 01:51:17来源:未知 阅读 ()
窗体间的传值很常用(还记得当时困扰了我好久。。。),有几种方式都可以实现,这里采用委托的方式。
1.首先,建好两个窗体,想要的效果如下。
2.看看里面的代码
2.1 Form1的代码
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace 窗体传值_委托_ 11 { 12 //设置给 文本框赋值方法 的委托 13 public delegate void setTextBox1ValueDel(string str); 14 15 public partial class Form1 : Form 16 { 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 //设置文本框的text 23 private void SetTextBox1Value(string str) 24 { 25 this.textBox1.Text = str; 26 } 27 28 //打开Form2 29 private void btnOpenForm2_Click(object sender, EventArgs e) 30 { 31 Form2 frm = new Form2(SetTextBox1Value); 32 frm.ShowDialog(); 33 } 34 } 35 }
2.2 Form2 的代码
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace 窗体传值_委托_ 11 { 12 public partial class Form2 : Form 13 { 14 15 // 文本框赋值方法 的委托属性 16 private setTextBox1ValueDel _setTextBox1ValueDel; 17 18 public Form2(setTextBox1ValueDel del ) 19 { 20 InitializeComponent(); 21 this._setTextBox1ValueDel = del; 22 } 23 24 //发送 25 private void btnSend_Click(object sender, EventArgs e) 26 { 27 _setTextBox1ValueDel(this.textBox1.Text); 28 } 29 } 30 }
3.到这里,问题已经解决了,可以关闭这个页面了。如果你没有成功,请看下面。
3.1委托
使用委托一共分三步:
1.定义
1.1看好了,setTextBox1ValueDel 直接定义在了命名空间下,而不是在某个类的下面。它代表的是一个方法的类型。
这个方法,没有返回值,参数是一个string类型。
1.1.1 为什么这么定义呢,是根据我想要被调用的方法决定的。被调用的方法是没有返回值的,只有一个string参数。
2.实例化
2.1 我在Form2的窗体里定义了一个setTextBox1ValueDel 类型的属性。
2.2 setTextBox1ValueDel 委托有了,但它自己并不知道自己是哪一个方法的委托(我还是觉得用“代理”这个词更好理解,某些语言中“委托”被称作“代理”)。
所以有了下面的代码:
2.2.1将方法名传递给Form2
2.2.2 Form2中的代理初始化
3.调用
3.1 现在可以调用了,传入的是string
4.我这么啰嗦的,写的这么详细,只是为了使用委托进行窗体间的值的传递吗?
4.1 线程
我是在线程的使用中才了解委托的,下一篇我将介绍在线程中的使用。
。。。。。其实,线程中使用和这里一样,我不过是想引出其它的知识点。
4.2 事件
我只知道,事件其实就是委托的一种形式。以后会自学下事件,然后再来分项。
4.3 其它的我不知道的使用场景
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Qt无边框窗体-模拟模态窗体抖动效果 2019-09-23
- Qt无边框窗体-最大化时支持拖拽还原 2019-08-27
- 对C#委托及事件委托的理解 2019-06-14
- 在iframe窗体内 获取父级的元素;;在父窗口中获取iframe中 2018-06-27
- Lambda表达式基础 2018-06-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash