我想在form2中获取form1中listbox选中的值,我把form1.Designer.cs中的listbox空间改成了public,然后在form2点击一个按钮后想直接获取,但是出错了,不知道为什么会这样,高人指点一下,谢谢啦。
form2中button click事件是这样写的:form1 frm = new form1(); textBox1.Text = frm.listBox1.SelectedItem.ToString();但是运行的时候会说 未将对象引用设置到这个对象实例。

解决方案 »

  1.   

    你应该是从form1--->form2,这个时候
    ,你在form2里面New一个form1,这个时候listBox1.SelectedItem当然是null了
    你完全可以把listBox1.SelectedItem的值传到form2里面
      

  2.   

    要怎么传呢,不创建form1的对象,要怎么在form2中获取值呢
      

  3.   

    定义个Common类     里面定义你要传的值的Name    然后随便传   随便调用。。   
      

  4.   

     public Form2(string str)
            {
                InitializeComponent();
                textBox1.Text =str;
            }
    //Form1中
    using(Fomr2 frm=new Form2(listBox1.SelectedItem==null?string.Empty:listBox1.SelectedItem.ToString())
    {
         frm.ShowDialog();
    }
      

  5.   

    这种方法我知道,用这种方法我就没必要修改listbox为public了,我想了解下能不能直接用form.lisbox1.XX来获取值
      

  6.   

    你可以这样
    form1 f1 = new form1();
    f1.ShowDialog(this);
    在form2中可以这样获取所需要的值:
    form1 f1 = (form1)this.owner;
    f1.listBox1.SelectedItem=??
      

  7.   

    前面两行是什么意思?在form1中为啥要这样ShowDialog,如果是在form2中,好像也不需要显示form1吧,顺便问下,(form1)this.owner是啥哈
      

  8.   

    在form1中还要跳转到form1,不是很奇怪嘛