日期:2014-05-17  浏览次数:20959 次

winform中如何把第二个界面的值传回给第一个界面?
在A界面有一按键打开B界面,然后从B界面传回一个值。
在B界面代码有(部份):
  private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  {
  UILevel.AgrMain agrMain = new AgrMain();
  if (treeView1.SelectedNode.LastNode == null) //判断是否为末节结点
  {
  textBox1.Text = e.Node.Text; //获取节点文本
  BussinessLevel.ShareClass.GroupID = e.Node.Text.Trim();
  this.Close();
  }
  else
  {
  textBox1.Text = "";
  }
  }
在A界面代码如下:
  private void AgrMain_EnabledChanged(object sender, EventArgs e)
  {
  textBox3.Text = BussinessLevel.ShareClass.GroupID;
  }
为什么值传不过来?请前辈指点!

特别说明,A界面中嵌套一个自定义控件,textBox3是在该自定义控件中。不知道是不是这里影响?



------解决方案--------------------
两个BussinessLevel是一个实例吗?

简单点就是A打开B的时候,把自己传过去. 

伪代码:
B b = new B();
b.a = this;
b.Show();
然后b中就可以调用A的public函数,或者读写public的属性了。
------解决方案--------------------
要想耦合性低点,可以使用Delegate.

参考:
C# WinForm传值
http://blog.csdn.net/renyouprince/article/details/3304906