委托--事件--基础以及在现在做的项目上的实际应用(二)
来源:互联网 发布:大数据培训考试答案 编辑:程序博客网 时间:2024/05/18 15:54
手头上的项目是winform的,难免进行窗体间传值和值的回传问题。传值好解决,构造函数定义需要传的参数就行,那回传呢?委托就体现价值了。
现在有Form1,Form2这两个窗体,
,当点击Form1的按钮时,把文本框中的值传给Form2,点击Form2中的按钮,把文本框的值回传给Form1。
1、Form2构造函数接受Form1的传值,代码:
public Form2(string str) : this() { textBox1.Text = str; }
Form1按钮点击事件代码如下:
string s = textBox1.Text; Form2 f = new Form2(s); f.ShowDialog();
这样Form2就能接收到Form1传来的值了,那么Form2文本框中的值进行回传呢?
思路:1、 Form1中的文本框From1很随意就可以获得,而且传回来的值就是要给Form1中的文本框赋值,那咱们就在Form1中定义一个给文本框赋值的方法:
public void SetStr(string str) { textBox1.Text = str; }
2、由于时Form2中的按钮点击回传值,使Form1的文本框改变值,那么Form2能直接调用这个方法就好了,怎么办?把这个方法给Form2,在需要的时候调用。怎么给?
用委托,上篇文章说过,委托就是把方法当作参数传递嘛。Form2改造如下:public delegate void Mydele(string strPara); public partial class Form2 : Form { public Form2() { InitializeComponent(); } public Mydele mdele; public Form2(string str, Mydele md) : this() { textBox1.Text = str; mdele = md; } }
3、Form1实例化Form2,进行传值的方法也需要改造为:
private void button1_Click(object sender, EventArgs e) { string s = textBox1.Text; Form2 f = new Form2(s,SetStr); f.ShowDialog(); }
4 、这样,Form2的按钮点击事件,就可以这样写了:
private void button1_Click(object sender, EventArgs e) { if (mdele!=null) { mdele(textBox1.Text); } }
5、运行,完成。 可以走调试运行,这样一步一步的加深印象。
0 0
- 委托--事件--基础以及在现在做的项目上的实际应用(二)
- 委托--事件--基础以及在现在做的项目上的实际应用(一)
- 委托--事件--基础以及在现在做的项目上的实际应用(三)
- 委托--事件--基础以及在现在做的项目上的实际应用(四)
- 数据分析在实际项目上的应用
- 委托的应用之二:使用多播委托编码Observer模式。以及事件的引入
- 通过委托的实际应用理解委托
- document在事件委托上的应用导致的事件冲突问题
- 元数据在实际项目的应用
- DWR在实际项目中的应用以及在调试过程中遇到的问题
- 在C++中模拟委托事件的方法(二)
- 在C++中模拟委托事件的方法(二)
- (7)java5线程并发库的应用(线程池) 以及在实际项目中的使用。。
- 关于OC中消息转发机制的理解以及在项目中的实际应用
- 关于OC中消息转发机制的理解以及在项目中的实际应用
- 我的架构之路 — 配置中心(二)— 在已有项目中实际应用
- 事件代理的实际应用
- 彻底搞懂事件与委托在商业项目的应用以及区别
- fl2440——修改UART2作为正常串口
- php与mysql
- java异常处理的throw和throws的区别
- 线程互斥与同步案例
- 神经网络笔记
- 委托--事件--基础以及在现在做的项目上的实际应用(二)
- 线索二叉树的前、中、后序创建和遍历
- 【Java邮件开发】5.编写一个JavaMail发送邮件的程序
- 训练MNIST数据集模型
- 社会化分享
- Mac下安装golang介绍
- NOI(题库正在建设中,做题纪录有可能会被删除,请注意) / 1.1编程基础之输入输出 01 Hello, World!
- 什么是反射(Reflection )?
- TOP5%Kaggler:如何在 Kaggle 首战中进入前 10% | 干货