一个winform程序,vs2008的
Form1中代码:Form3 shezhi = new Form3();
           
shezhi.ShowDialog(this);数据源绑定:comboBox1.DataSource = ds.Tables["服装品牌"];Form3中代码:Form1 fmain;
public Form3(Form1 frm)
{
    fmain = frm;
 }当combobox的数据源变了后,我直接在Form3中操作数据源的更新
连接数据库,取得dataset....
.....
fmain.comboBox1.DataSource = ds.Tables["服装品牌"];
每次执行到上面这句时就报错:未将对象引用设置到对象实例中。
我改成fmain.comboBox1.datasource=null;还是报一样的错。
各位帮忙看看

解决方案 »

  1.   


    Form3 shezhi = new Form3(this);
    shezhi.ShowDialog();
    创建Form3的时候,要传递主窗口的引用
      

  2.   

    Form3 shezhi = new Form3();你都没有调用你添加的带参数的构造函数
    public Form3(Form1 frm)
    {
      fmain = frm;
    }
    所以fmain就为null了,当你fmain.comboBox1.datasource调用的时候就会出错了~
      

  3.   

    Form3 shezhi=new Form3(this);
    这样的话,Form3跳出来的就是一个空白的新窗口了,为什么?
      

  4.   


    public Form3(Form1 frm)
    {
      fmain = frm;
     InitializeComponent();
     }
      

  5.   

    正解
    但不赞成这样做,会造成这两个类的相互依赖,实际的程序设计中一般不会这样,会造成这连个类无法单独复用。解决方法:
    方法1.等Form3关闭后,刷新Form1。
    方法2.增加一个接口,让From3依赖接口,来刷新Form1。