winform窗体间传值有关问题

winform窗体间传值问题
现在有子窗体A和主窗体B,在A和B里分别有一个ListBox,现在要将A里面ListBox里面的值传给B里面的ListBox,具体应该怎么做呢?急!在网上查过很多资料,尝试过,还是没成功,搞不清楚到底是要怎么传?最好是给出具体的代码
------解决思路----------------------
http://bbs.csdn.net/topics/390128592
------解决思路----------------------
这方面的资料网上早已经一大把了, 
请参考http://www.cnblogs.com/tomin/archive/2009/02/25/1397677.html
------解决思路----------------------
form1中的textbox1的modifilers设为Public,  
   private void button1_Click(object sender, EventArgs e)  
      {   

   Form2 f2 = new Form2();  
    f2.ShowDialog(this);          
}    
  
form2:
 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)  
  {  
      Form1 f1 = (Form1)this.Owner;  
      f1.textBox1.Text = listBox1.SelectedItem.ToString();  
  }  
------解决思路----------------------
引用:
额······我要是能看明白,能用对,就不来这里问了·······


最简单的,构造函数传值
自定义一个类 class1,存储你要传的变量值。
在新窗体的构造函数中,把class1作为构造函数的参数。这总明白了吧。
 
引用:
http://bbs.csdn.net/topics/390128592


第三种方法:用构造函数
在窗体Form2中


int value1; 
string value2; 

public Form2 ( int value1 , string value2 ) 

     InitializeComponent ( ); 

     this.value1 = value1; 
     this.value2 = value2; 
}


在窗体Form1中这样调用

new Form2 ( 111 , "222" ).Show ( ); 

这样就把111,"222",这2个值传送给了Form2 
但是这样的传值是单向的



------解决思路----------------------
--------------------------------------------------------------------
对于新手而言,,上图上代码直观,毕竟也是走过的路。。
-------------------

-----主窗体B代码
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(listBox1);
            f2.ShowDialog();
        }

------子窗体A代码
public Form2()
        {
            InitializeComponent();
        }
       
        ListBox lstbox2;
        public Form2(ListBox lstbox1)
        {
            lstbox2 = lstbox1;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            lstbox2.Items.Add(listBox1.Text);
        }


------------------运行程序图

winform窗体间传值有关问题

winform窗体间传值有关问题

winform窗体间传值有关问题

winform窗体间传值有关问题

------------这些小问题百度都一大堆。。。。。。。。
------解决思路----------------------
引用:
现在有子窗体A和主窗体B,在A和B里分别有一个ListBox,现在要将A里面ListBox里面的值传给B里面的ListBox,具体应该怎么做呢?急!在网上查过很多资料,尝试过,还是没成功,搞不清楚到底是要怎么传?最好是给出具体的代码


1. A可以直接暴露ListBox,例如在你的vs的窗体属性窗口中将对应的ListBox设置为public的,这样就可以从B直接访问A。

2. A是子窗体,设计的思想是“屏蔽对其它窗体的依赖关系”,也就是A中绝不访问B。A其实就是一个服务,它抛出一个“事件通知”来通知自己的宿主程序“ListBox已经改变”。你可以让你的A实现 INotifyPropertyChanged 接口,来向外界抛出属性修改的通知。

3. B在创建A的实例之后,监听此窗口的“PropertyChanged事件”。当判断此事件是通知ListBox修改的时候,就读取ListBox,并且更改自己的ListBox。


因此设计的原则是,这个“将A里面ListBox里面的值传给B里面的ListBox”根本就是不符合“低耦合”逻辑的。你应该在设计时就该为“B监听到A中ListBox修改,则自动读取A中的ListBox来更新自己的ListBox”,这个设计才更能保证你的程序将来扩展起来会干净简洁。
------解决思路----------------------
慢慢来,加油吧。我以前也遇过这种问题。看细点