子父窗体操作.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档