- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子父窗体操作
应用程序开发中,经常需要多窗体之间进行数据通信,写几个例子,把几种常用的通信方式总结一下:???主窗体Form1是一个ListBox,单击选中某列时,弹出窗体Form2,Form2中两个控件,一个是TextBox,显示选中的该列的文本,另一个是按钮,点击时将修改后的值回传,且在Form1中修改相应的列的文本,同时Form2关闭。?方法一:传值?最先想到的,Form2构造函数中接收一个string类型参数,即Form1中选中行的文本,将Form2的TextBox控件的Text设置为该string,即完成了Form1向Form2的传值。当Form2的AcceptChange按钮按下,需要修改Form1中ListBox中相应列的值,因此可以考虑同时将Form1中的ListBox控件当参数也传入Form2,所有修改工作都在Form2中完成,根据这个思路,Form2代码如下: C#代码 publicpartial?class?Form2?:?Form?{?private?string?text;?private?ListBox?lb;?private?int?index;??//构造函数接收三个参数:选中行文本,ListBox控件,选中行索引?public?Form2(string?text,ListBox?lb,int?index)?{?this.text?=?text;?this.lb?=?lb;?this.index?=?index;?InitializeComponent();?this.textBox1.Text?=?text;?}??private?void?btnChange_Click(object?sender,?EventArgs?e)?{??string?text?=?this.textBox1.Text;?this.lb.Items.RemoveAt(index);?this.lb.Items.Insert(index,?text);?this.Close();?}?}???Form1中new窗体2时这么写:C#代码 public?partial?class?Form1?:Form?{?int?index?=?0;?string?text?=?null;?public?Form1()?{?InitializeComponent();?}??private?void?listBox1_SelectedIndexChanged(object?sender,?EventArgse)?{?if?(this.listBox1.SelectedItem?!=?null)?{?text?=?this.listBox1.SelectedItem.ToString();?index?=?this.listBox1.SelectedIndex;??//构造Form2同时传递参数?Form2?form2?=?new?Form2(text,?listBox1,?index);?form2.ShowDialog();?}?}????OK,方法一的解决方法就是这样,好处是直观,需要什么就传什么,缺点也是显而易见的,如果窗体1中需要修改的是一百个控件,难道构造的时候还传100个参数进去?况且如果其他窗体仍然需要弹Form2,那Form2就废了,只能供窗体1使用,除非写重载的构造函数,不利于代码的复用,继续看下一个方法。?方法二:继承 ?这个方法我试了很多次,继承的确可以做,但是麻烦不说,还不方便,因此个人认为如果为了互相操作数据而使用继承,是不合适的,但既然是个方法,就扔出来看看,实际作用≈0。 ?Form2: C#代码 //声明Form2继承于Form1?public?partial?classForm2?:?Form1?{?publicint?index;??public?ListBox?lb;?public?Form2(string?text)?{??//将继承过来的listBox设置为不可见??this.listBox1.Visible=false;?InitializeComponent();?this.textBox1.Text?=?text;?}?private?void?btnChange_Click(object?sender,?EventArgs?e)?{?string?text?=?this.textBox1.Text;?this.lb.Items.RemoveAt(index);?this.lb.Items.Insert(index,text);?this.Close();??}?}???Form1:C#代码 public?partial?class?Form1?:Form?{?public?int?index?=?0
您可能关注的文档
最近下载
- 2024-2030年中国六氟磷酸锂行业市场现状供需分析及投资评估规划分析研究报告.docx
- 防护工程之三维网植被护坡(附施工图解、工艺、造价编制).pdf VIP
- 《中铁一局集团有限公司工程项目管理绩效考核办法》(中铁一成本[2015]623号).doc
- 机械打眼开炸石方(附施工图解、造价编制).pdf VIP
- 路基土石方(借土填方)(附施工图解、工艺、造价编制).pdf VIP
- 2023扬州龙川控股集团有限责任公司招聘试题及答案解析.docx
- 交通安全设施之交通标志(附施工图解、工艺、造价编制).pdf VIP
- 路基土石方之填挖交界(附施工图解、工艺、造价编制).pdf VIP
- 2纵横造价实战--抛石挤淤附施工图解、工艺、造价编制.pdf
- 2024《我的阿勒泰》作品简介PPT课件(精品).pptx
文档评论(0)