各位好:
    小弟问一小问题,请各位帮忙解决.
    假设有两窗体A ,B 
    A窗体中有空间 listbox1 ,button1,
    B窗体中有空间 listbox2 ,button2,
    我现在想实现的是想在A窗体中通过点button1 ,显示窗体B,在B中做些操作,然后再把B窗体中的
listbox2的所有项全部回传到A并在listbox1中显示 ,
  好象有个showdialog()的方法,请赐教!
    

解决方案 »

  1.   

    参看
    http://blog.csdn.net/Knight94/archive/2006/08/22/1104957.aspx
      

  2.   

    FormA Click事件:
    FormB  b = new FormB(listBoxA)
    b.Show();//或者ShowDialog();也可以FormB: 
    ListBox refListBoxA;//定义一个引用,指向FormA中的listBoxA;
    public FormB(ListBox listBoxA)//构造函数接受一个ListBox实例
    {
       this.refListBoxA = listBoxA;
       //其他初始化代码;
    }
    //FormB中可以对refListBoxA进行任何操作,且对其的修改可以影响到FormA
      

  3.   

    button1_Click (...)
    {
       B b = new B();
       if (DialogResult.OK == b.ShowDialog())
    {
        
       //获取list2的数据
       for (int i = 0 ; i <    b.listBox2.GetItemCount(); ++i)
    {  
    for (int j = 0 ; j < b.listBox2.GetColumnCount(); ++j)
    {
       string s =  b.listBox2.GetItemText(i,j);
    }

    }
    }
      

  4.   

    说明:在这个例子中我们的两个窗体都加了一个ListBox用来显示ArrayList中的内容。  主窗体中控件:listBoxFrm1,buttonEdit;  子窗体中控件:listBoxFrm2,textBoxAdd,buttonAdd,buttonEdit,buttonOK。  这次我们用ArrayList来作为传递数据,在Form1中定义类数据成员:  private ArrayList listData1;  在构造函数中增加了对listData1进行内存分配,并生成数据最终绑定到listBoxFrm1, public Form1()  {       InitializeComponent();       this.listData1 = new ArrayList();       this.listData1.Add("DotNet");       this.listData1.Add("C#");       this.listData1.Add("Asp.net");       this.listData1.Add("WebService");       this.listData1.Add("XML");       this.listBoxFrm1.DataSource = this.listData1;  }  另外,对修改按钮点击事件处理函数的修改如下:  private void buttonEdit_Click(object sender, System.EventArgs e)  {      Form2 formChild = new Form2(this.listData1);       formChild.ShowDialog();      this.listBoxFrm1.DataSource = null;       this.listBoxFrm1.DataSource = this.listData1;  } 相对与主窗体,对子窗体作相应修改,也在Form2中增加了类数据成员:  private ArrayList listData2;  用来保存对主窗体中listData1的引用。  修改构造函数:  public Form2(ArrayList listData)  {       InitializeComponent();       this.listData2 = listData;       foreach(object o in this.listData2)       {           this.listBoxFrm2.Items.Add(o);       }  }  这里让listData2同listData1指向同一个引用;另外没有对listBoxFrm进行绑定,采用了填充。  好了,下面是对数据操作的时候了。  添加处理函数代码如下:  private void buttonAdd_Click(object sender, System.EventArgs e)  {      if(this.textBoxAdd.Text.Trim().Length>0)       {           this.listData2.Add(this.textBoxAdd.Text.Trim());           this.listBoxFrm2.Items.Add(this.textBoxAdd.Text.Trim());       }       else           MessageBox.Show("请输入添加的内容!");  }  删除处理代码如下:  private void buttonDel_Click(object sender, System.EventArgs e)  {       int index = this.listBoxFrm2.SelectedIndex;       if(index!=-1)       {           this.listData2.RemoveAt(index);           this.listBoxFrm2.Items.RemoveAt(index);       }       else           MessageBox.Show("请选择删除项或者没有可删除的项!");  }  退出Form2子窗体:  private void buttonOK_Click(object sender, System.EventArgs e)  {       this.Close();  }  编译运行程序,在子窗体中对数据进行修改,关闭后,主窗体就会显示更新后的数据。 
      

  5.   

    http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
    这里的第二个例子