- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
总结C中窗体间传递数据的几种方法.
总结C#中窗体间传递数据的几种方法 (由别人的方法整理)
?
? 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个form2窗口作为录入界面,将录入的值经转换后在form1中显示。 采用了委托的方法,可以实现。(与VC的回调的应用相似)
1.可以通过委托的方法来解决
问题:通过form1做一个录入界面,将里边通过文本框录入的数值复值给 form2中的listview各列,用3个textbox1.text举例吧,分别对应listview的3个列。
可以这么做,如果两个窗体是在同一个命名空间下
定义一个代理,注意这个代理是全局的:(即同一命名空间下,与Form1,Form2平级的)
public delegate void MyInvoke(string Item1,string Item2,string Item3);
?
//在窗体From2中有这么一个回调函数,用于在ListView里添加一个新项的:
private void UpdateListView(string Item1,string Item2,string Item3)
{
??? ListView1.Items.Add(Item1);
??? ListView1.Items[ListView1.Items.Count - 1].SubItems.Add(Item2);
??? ListView1.Items[ListView1.Items.Count - 1].SubItems.Add(Item3);
}
?
//比如说点击Form2的一个按钮弹出Form1进行录入,在点击按钮的事件下:
//把委托传过去
Form1 frmEdit=new Form1(new MyInvoke(UpdateListView));
frmEdit.ShowDialog(this);
?
//在Form1里定义一个属性
private MyInvoke mi=null;
?
在构造函数中接收这个委托:
public Form1(MyInvoke myInvoke)
{
?? this.mi=myInvoke;
}
?
//录入数据后,点击OK按钮,在点击事件下:
//回调
this.mi(this.TextBox1.Text,this.TextBox3.Text,this.TextBox3.Text);
this.Close();//关闭Form1
补充:如果我要是想再把form2的值给form1,
Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string para2...);
frmEdit.ShowDialog(this);
然后将Form1的构造函数改成可以接收几个参数的就行了。
?
2.假如主框架为Form1,打开的搜索对话框是Form2.直接在Form2类中申明一个Form1实例:Form1 f1=new Form1();然后就可以通过f1来调用Form1中的域和函数了。其实不是这样的,你申明的新的Form1实例不是原来的那个Form1对象了,这样操作的是新的Form1中的域和函数,和最先打开的Form1是没有关系的。
我们要做的是把当前的Form1实例传递给Form2,如果是这样的话,问题就很好解决了。
方法1:首先,我们在Form2中定义:
private Form1 mF_Form
我们更改Form2的构造函数为有参数的
public Form2 ( Form1 myForm ) { // // Windows 窗体设计器支持所必需的 // InitializeComponent ( ) ; this.mF_Form? = myForm ;?? /////这样在Form1中申明Form2的时候就把Form1的实例传递过来了 // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // }
在Form1中,我在 要用到Form2的地方申明如下:
Form2 f2=new? Form2(this);////这里的this指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类(其实在网上看到过比较蠢的方式,就是在构造函数里面传递要传递的信息如:字符串或是数字等,这样做很有局限性,不能传递其他的,所有我们可以直接传递实例,来完成传递更多的信息。)
这样在Form2中使用myForm 就可以对原来的Form1窗口进行操作了。但是你要把要操作的Form1中
您可能关注的文档
- 总工岗位职责(改)..doc
- 总工程师绩效考核标准..doc
- 总布置设计规范..doc
- 总工组织设计..doc
- 总平及绿化施工组织设计..docx
- 总平施工组织设计..doc
- 总平面图设计规范..doc
- 总平面布置需要注意的问题..doc
- 总开工报告施工组织设计..doc
- 总承包2012-2013年度施工组织设计..doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
最近下载
- 汽车英语(第四版)习题答案.pdf VIP
- 苏科版《物质物理属性》复习总结课件.ppt VIP
- 一般过去时练习专项练习.docx VIP
- (市质检)福州市2025届高三第一次质量检测(一检) 语文试卷(含答案).docx
- 初中英语单词全集打印版.doc VIP
- 浪潮分布式存储InCloud Storage 用户手册.pdf VIP
- 量子传感技术的最新进展与应用.docx
- 专题20函数与相似综合问题-【压轴必刷】2022中考数学压轴大题之经典模型培优案(解析版).pdf VIP
- 医院医德医风考评制度及实施细则(最新版).docx
- (市质检)福州市2025届高三第一次质量检测(一检) 数学试卷(含答案).docx
文档评论(0)