窗体之间传递值的几种方法
窗体之间传递值的几种方法
场景如下:
我有一个mainFrm(父窗体), 一个subFrm(子窗体) 点击父窗体的按钮启动子窗体,点击子窗体的按钮可以给父窗体设置值。如下图
第一种方法:启动子窗体,将整个窗体(this)传递过去。(不建议使用)
步骤如下:
1.在主窗体写一个函数SetText函数(这个地方也就是嵌入代码,你需要改那个窗体的内容,就在那个窗体写一个修改的函数。
public void SetText(string msg) //这个地方SetText是公有的{this.textBox1.Text = msg;}
2.在new 子窗体的时候加入参数this.
private void button1_Click(object sender, EventArgs e){ subFrm frm = new subFrm(this); //这个方法的核心就是传递thisfrm.Show();}
3.给子窗体添加构造函数重载(子窗体持有一个mainFrm类的变量parentFrm)。
public subFrm(mainFrm parentFrm):this(){this._parentFrm = parentFrm;}
4.在子窗体的button事件上添加如下代码:
private void button1_Click(object sender, EventArgs e){string sendText = this.textBox1.Text;this._parentFrm.SetText(sendText);}
第二种:使用委托
步骤如下:
1.在主窗体写一个函数SetText函数(这个地方也就是嵌入代码,你需要改那个窗体的内容,就在那个窗体写一个修改的函数。
private void SetText(string msg){this.textBox1.Text = msg;}
2.在子窗体里面定义一个委托(算是委托类吧), public delegate void SendMsgDelegate(string msg); 这个定义要和主函数的SetText方法一致(返回值是void,参数是string)
并且在定义一个委托(算是委托变量吧) public SendMsgDelegate sendMsg;用委托定义一个委托变量,这个委托变量只能接受返回值是void,参数是string的函数)。是类型安全的。
3.在主窗体的按钮事件上new子窗体的时候加入如下代码
private void button1_Click(object sender, EventArgs e){subFrm frm = new subFrm(); //new一个子窗体frm.sendMsg = new SendMsgDelegate(SetText); 给那个子窗体的委托变量(sendMsg)赋值(主窗体的函数SetText)frm.Show();}
4.在子窗体的按钮事件上加入如下代码
private void button1_Click(object sender, EventArgs e){string sendText = this.textBox1.Text; //读取自己窗体(子窗体)的textBox1的输入值if (sendMsg != null)//判断方法是否为空{sendMsg(sendText);//调用方法}}
df
窗体之间传递值的几种方法相关推荐
- C#中不同窗口之间传递值的两种方法
在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法: 项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和Text ...
- ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- C#中窗体间传递数据的几种方法
C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...
- 经典面试题(三):ASP.NET部分----ASP.NET 页面之间传递值的几种方式
ASP.NET 页面之间传递值的几种方式 1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量. 3.使用Serve ...
- Asp.net页面之间传递参数的几种方法
Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx: protected void Button1_Clic ...
- Asp.net页面之间传递参数的几种方法荟萃
第一种方法: 通过URL链接地址传递 send.aspx: protected void Button1_Click(object sender,EventArgs e) { ...
- 总结C#中窗体间传递数据的几种方法
在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个form2窗口作为录入界面,将录入的 ...
- 页面之间传递参数得几种方法
1.hidden变量 <form id="Form1" method="post" runat="server"> &l ...
- ASP.NET 页面之间传递值的几种方式
1.使用QueryString, 如....?id=1; response. Redirect().... 2.使用Session变量 3.使用Server.Transfer 4.Cookie传值 5 ...
最新文章
- R语言KMeans聚类模型示例
- 深度优先搜索(dfs),城堡问题
- PHP如何调取vlc播放rtsp,H5+VLC播放RTSP视频流
- javaweb学习总结(三十一)——国际化(i18n)
- 使用SQL存储过程有什么好处 用视图有什么好处
- EJB3.0学习笔记---MDB--第一个MDBBean程序:
- axios取消接口请求
- 堆栈平衡(子程序调用)
- java httpclient 关闭_httpclient 4种关闭连接
- aliddns ipv6_利用阿里云ddns动态解析ipv6地址
- 南挚seo:参加白杨seo师徒群培训后两个月感悟总结!
- eleme接口测试01(C#)
- 原装世嘉土星SS手柄(Sega Saturn)改USB接口,实现低延时USB格斗手柄
- 智能搬运机器人系列之使用旭日X3派实现机器人防脱轨功能
- go语言 json -转载
- android仿空间短视频播放
- java applet 一个简单的例子(applet+html)
- 北京联通dns服务器位置,ipv6北京联通dns服务器地址
- andrAndroid 权限
- 职业自我认知的测试软件,职业规划 自我认知与职业测试 讲稿
热门文章
- 特斯拉自动驾驶要命?大白天忽然开启”自杀模式“
- 《浪潮之巅》吴军:特斯拉自动驾驶堪比中甲水平,全球5G看好华为
- 这是AI?这是爱?这是能全方位监控学生的“智能校服”
- ICLR 2019提交截止,近1600篇论文已全部上线
- 福特在迈阿密开始探索自动驾驶商业模式:先送比萨试试
- 无人驾驶是好,但晕车咋办?
- 怎么在线直接将多张CAD图纸转换成高质量黑白PNG格式?
- python接口自动化21-下载excel文件(Content-Type:octets/stream)
- phalcon:model 事件与事件管理器
- SCOM 2012知识分享-15:监视管理组运行状况