欢迎来到天天文库
浏览记录
ID:25685431
大小:50.00 KB
页数:5页
时间:2018-11-22
《c#控制winform窗体间数据交互的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本文将为大家介绍的是WinForm窗体之间的数据交互等问题,包括自定义一个构造函数等等问题。在窗体间传递数据的方法比较多:1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了:1.public class frmMain:Form 2. { 3. ... 4. frmControl controlForm=new frmControl(this); 5. controlFo
2、rm.Show(); 6. } 7. public class frmControl:Form //子窗体,用来控制主窗体的某些显示! 8. { 9. private frmMain mainForm; 10. public frmControl(frmMain mainForm) 11. { 12. this.mainForm=mainForm; 13. } 14. private void button1_Click
3、(object sender,EventArgs e) 15. { 16.frmMain.textBox1.Text=this.textBox1.Text; //把子窗体的文本框值传递给主窗体的文本框! 17. } 18. } 2,我个人感觉上面的方法不是很好,虽然实现起来很简单,只是想改变窗体的标题文本,就把整个主窗体的引用都传递给子窗体,这样的方式不是很幽雅,我们用接口来改进上面的方法,这样可以限制暴露给子窗体的功能,降低
4、窗体之间的耦合度:1.public interface IChangeTitle: 2. { 3. void ChangeTitle(string title); 4. } 5. public class frmMain:Form,IChangeTitle 1. { 2. ... 3. frmControl controlForm=new frmControl(this); 4. controlForm.Show(); 5. public void ChangeTitle(str
5、ing title) 6. { 7. this.Text=title; 8. } 9. } 10. public class frmControl:Form //子窗体,用来控制主窗体的某些显示! 11. { 12. private IChangeTitle ichangeTitle; 13. public frmControl(IChangeTitle ichangeTitle) 14. { 15. thi
6、s.ichangeTitle=ichangeTitle; 16. } 17. private void button1_Click(object sender,EventArgs e) 18. { 19.ichangeTitle.ChangeTitle(this.textBox1.Text); //通过接口来调用方法 20. 21. } 22. 23. } 3,为了进一步降低窗体之间的耦合度,我们可以用委托来实现这个需求:1.public parti
7、al class ChildForm : Form 2. { 3. public delegate void TitleChangedHandler(string title); 4. public TitleChangedEventHandler TitleChanged; 5. public ChildForm() 6. { 7. InitializeComponent(); 8. } 1. 2. 3. private void btn_Ok_Click(o
8、bject sender, EventArgs e) 4. { 5. if (TitleChanged != null) 6. TitleChanged("Test
此文档下载收益归作者所有