C#不同窗体之间传递参数

  最近导师安排C#写桌面GIS开发。碰到诸多问题。无奈不是计算机出身的我早就把编程基础还给老师了。开发过程属于敲代码两分钟翻博客两小时的状态,这边将自己的问题及解决方案总结。希望有所帮助。
  主要两个内容:①父窗口给子窗口传递参数,②子窗口给父窗口传递参数。


1. 父给子
2. 子给父
3. 说明

1.父窗口向子窗口传递参数

  这个就比较简单了,级别高一点访问也轻松一点。具体的原理我就不讲了(感觉说不清楚OJ2…),总之使用类的私有变量然后父窗口赋值就可以了。
  父窗口(mainForm)代码:

namespace demo_Params
{public partial class mainForm : Form{public mainForm(){InitializeComponent();}//传递变量到子窗口private void btn_Input_BtnClick(object sender, EventArgs e){childForm childForm = new childForm();//childForm为新建窗口类childForm.str = this.tb_MainFormIn.InputText ;//str为子类的公有变量if (childForm.ShowDialog() == DialogResult.OK) return;}}
}

  子窗口(childForm)代码:

namespace demo_Params
{public partial class childForm : Form{public childForm(){InitializeComponent();}//私有变量和赋值,value值在父窗口传递private string w_str;public string str{set{w_str = value;}}//显示父窗口的变量到文本框private void btn_getPara_BtnClick(object sender, EventArgs e){this.tb_childFormIn.Text = w_str;}}
}

2.子窗口向父窗口传递参数

  这个就比较麻烦了,看了很多,自己用起来感觉不错的是通过委托事件和事件触发执行函数来解决参数的传递和接受。道理就不说了,直接COPY用起来。
  父窗口(mainForm)代码:

namespace demo_Params
{public partial class mainForm : Form{public mainForm(){InitializeComponent();}//接受参数初始化string str = "";      //打开子窗口childFormprivate void btn_openWin_BtnClick(object sender, EventArgs e){childForm childForm = new childForm();childForm.getParam += new backParam(fun_GetChildParam);//绑定事件if (childForm.ShowDialog() == DialogResult.OK) return;}//委托事件执行方法void fun_GetChildParam(string w_childpara) {str = w_childpara;}//显示参数到文本框,看看参数能不能调用private void btn_Output_BtnClick(object sender, EventArgs e){tb_MainFormOut.InputText = str;}}
}

  子窗口(childForm)代码:

namespace demo_Params
{public delegate void backParam(string str);//声明委托public partial class childForm : Form{public childForm(){InitializeComponent();}public event backParam getParam;//委托事件,接受一个string变量//传回变量 关闭窗口private void btn_childFormBack_BtnClick(object sender, EventArgs e){getParam(this.tb_childFormIn.Text);//将变量委托this.DialogResult = DialogResult.OK;}}
}


3.代码说明

  两种传递参数的情况,我写在了一个程序里面。整理时为了区分,有所删改。(子传父代码块内不含父传子内容)
  直接复制代码至WPF项目中,应该不能运行。 使用了第三方控件,部分控件属性、事件命名不同。大家如要复现使用TextBox和Button即可。


欢迎大家反馈交流。
本文链接:https://blog.csdn.net/qq_38560619/article/details/107049844

C#不同窗体之间传递参数相关推荐

  1. 窗体之间传递值的几种方法

    窗体之间传递值的几种方法 场景如下: 我有一个mainFrm(父窗体), 一个subFrm(子窗体) 点击父窗体的按钮启动子窗体,点击子窗体的按钮可以给父窗体设置值.如下图 第一种方法:启动子窗体,将 ...

  2. React 组件之间传递参数

    其实react组件之间传递参数是比较简单的,但是没有具体的使用过,组件之间传递参数是比较常见的事情,所以记录一下,防止以后自己在网上胡乱的翻找 最近做了一个商品的列表页面,我想通过点击修改能够实现商品 ...

  3. [html] 在两个iframe之间传递参数的方法有哪些?

    [html] 在两个iframe之间传递参数的方法有哪些? 通过postMessage与父级通过,父级传递消息通过websocket通信如果是同一个域名下可用stroage,监听storageChan ...

  4. java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解

    脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...

  5. Asp.net页面之间传递参数的几种方法

    Asp.net页面之间传递参数的几种方法 第一种方法: 通过URL链接地址传递Request.QueryString send.aspx:    protected void Button1_Clic ...

  6. java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进

    两个项目之间传递参数问题 --- 大神进 情况 1.两个ssh项目 oms  与 GiftERP 2.调用的是GiftERP的一个Goods表,需要将表数据返回给oms项目 3.首先我oms的页面有一 ...

  7. Android10apk怎么传数据,Android不同apk之间传递参数与数据

    转载出处:http://dongyang555-126-com.iteye.com/blog/1308586 android编程的时候,有时候需要在不同的apk之间传递参数或数据,下面是一个简单的例子 ...

  8. jmeter解决不同线程组之间传递参数问题

    jmeter解决不同线程组之间传递参数问题 参考文章: (1)jmeter解决不同线程组之间传递参数问题 (2)https://www.cnblogs.com/yingchen/p/5110335.h ...

  9. QT5界面(窗口)之间传递参数

    先简单概述一下窗口之间传递参数的机制–"张三去商店买烟" 分解动作: 谁?–张三 去哪?–商店 要干嘛?–买烟 怎么去?–走路去 结果?–张三得到烟 窗口(A):张三 信号(sig ...

最新文章

  1. [转贴]电阻电容的封装形式如何选择
  2. 【PAT】A1063 Set Similarity
  3. [编程入门]带参数宏定义练习:定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
  4. JS中ptototype和__proto__的关系
  5. 大数据平台构建_如何像产品一样构建数据平台
  6. 【十八】文件译文:graph.js.fmkr (测试报告模版配置文件)
  7. 图像处理工具包ImagXpress使用教程:多页TIFF编辑API的使用(二)
  8. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
  9. 《哥德尔、艾舍尔、巴赫:集异璧之大成》
  10. Bishop-Pattern-Recognition-and-Machine-Learning-2006 pdf转html并翻译
  11. 考公 | 张小龙讲申论(2019地市级真题)
  12. Andorid连接USB打印机
  13. Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Archit
  14. 微信墙html5,微信墙怎么做?微信墙制作流程介绍
  15. 使用素描图像识别人脸
  16. HIVE启动的时候, The server time zone value ‘EDT‘ is unrecognized or represents more than one time zone.
  17. nginx配置tcp转发
  18. Redis主从配置详细流程
  19. 三维扫描系列 点云绪论
  20. eclipse 自带git插件 文件提交后修改标志不明显

热门文章

  1. 微生物组-宏基因组分析(线上开课,2021.1)
  2. yolov5中的Focus模块的理解
  3. 【电源设计】14控制与环路设计
  4. String 中 split 方法的效率问题
  5. android 投影 windows,192.168.137.1 安卓直接投影到 Win 10
  6. 【操作系统实验6】CPU调度程序模拟实现
  7. UE4如何制作小地图
  8. c语言long和long long的取值范围,转义字符
  9. 520送女盆友什么礼物最好?电商最火4款电容笔
  10. 不要迷恋哥,哥只是个传说(华为版)