1:先看测试的效果图:
2:全部的代码
1 using System; 2 using System.Windows.Forms; 3 4 namespace WindowsForms 5 { 6 public partial class ParentForm : Form 7 { 8 public void ParentGetvalue(string text) 9 { 10 this.textBox1.Text = text; 11 labelp.Text ="获取的值是:"+ text; 12 } 13 public Action<string> doinvokeP; 14 private void ParentForm_Load(object sender, EventArgs e) 15 { 16 ChildForm cf = new ChildForm(this); 17 doinvokeP += cf.ChildGetValue; cf.Show(); 18 } 19 private void btnParent_Click(object sender, EventArgs e) 20 { 21 if (doinvokeP != null) 22 { 23 doinvokeP.Invoke(textBox1.Text); 24 } 25 } 26 27 public ParentForm() 28 { 29 InitializeComponent(); 30 } 31 } 32 }
View Code
1 using System; 2 using System.Windows.Forms; 3 4 namespace WindowsForms 5 { 6 public partial class ChildForm : Form 7 { 8 public ParentForm cpform; 9 public void ChildGetValue(string msg) 10 { 11 textBoxC.Text = msg; 12 } 13 public ChildForm(ParentForm cpform) 14 { 15 this.cpform = cpform; 16 InitializeComponent(); 17 } 18 19 private void btnChild_Click(object sender, EventArgs e) 20 { 21 if (cpform!=null) 22 { 23 this.cpform.ParentGetvalue(textBoxC.Text); 24 } 25 } 26 } 27 }
View Code
3:总结
由父到子窗体使用了委托,但是反过来由子到父,一样对应的逻辑,就是不行,后来调式打印,值都传递过去了,就是不行,浪费了一些时间!
最后发现是父窗体根本就不是同一个对象的问题,看来还是要细心才行,欢迎大家有更好的建议,谢谢!
如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!
好了今天就先到这里,下次有时间再更新,如果存在不合理的地方,欢迎大家多多指教留言!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/64017.html