写了一用户组件winform,有两个comboBox
都是从数据库取出来的数据
现在想获利comboBox的值及根据值来执行相关的SQL语句返回DataTable类型
两个GET访问器如下
public string KHXX
{
    get
{
return this.comboBox2.SelectedItem.ToString().Trim();
}
}
------------------------------------
public DataTable SendGoodsQuery
{
get
{
DataTable QueryTab;
if(this.comboBox2.SelectedItem.ToString().Trim()!="")
{
string bh=this.comboBox2.SelectedItem.ToString().Trim();
string str="select * from table1 where khbh='"+bh+"' ";
QueryTab=this.link.SelectDataBase(str);//返回DataTable类型的集合 }
else 
{
QueryTab=null;
}
return QueryTab;
}
}
--------------------------------------
将控件拖到form,都提示:未将对象引用设置到对象的实例。

解决方案 »

  1.   

    问题估计在这两个地方:
    this.comboBox2.SelectedItem.ToString()
    this.link.SelectDataBase(str);前者可能是因为没有选中项,所以最好判断 if(this.comboBox2.SelectedItem != null)...后者可能是因为link没有初始化吧,因为是在设计,你可能也没地方初始化,所以你在这里可以判断一下link(可能还涉及其他对象)是否存在,不存在就别使用了。if (this.link != null)...
      

  2.   


    public string KHXX
    {
        get
    {
    return this.comboBox2.SelectedItem.ToString().Trim();
    }
    }
    改为:
    public string KHXX
    {
        get
    {
                        try
                         {
    return this.comboBox2.SelectedItem.ToString().Trim(); 
                           }
                           catch
                          {
                               return "";
                            }
    }
    }
    SendGoodsQuery作同样的修改
      

  3.   

    谢谢yeerh(边城浪),aafshzj(上海北京) 
    问题基本上解决
    原来如此
    大意了
    -----------------------------------------
    另To:yeerh(边城浪),弱弱地问一句
    对于数据库连接字符串ConnectionString,
    让用户控件使用调用用户控件的窗体的连接字符串如何实现?
    我在用户控件的load事件中就有数据库查询操作
    马上结贴
      

  4.   

    控件的执行时的代码应该放到
     if (!this.DesignMode)
                {
                    //比如连接数据库的方法
                }
    块中执行,否则在设计时会由于部分属性没有完成初始化,而导致异常
    至于连接字符串,可以用公布属性的方法,在设计模式下由承载窗口的InitializeComponent方法或函载窗口的构造函数赋值.
    必须在设置某属性后才能正确执行的方法,因该实现ISupportInitialize接口然后在
            public void EndInit()
            {
                if (!this.DesignMode)
                {
                    //检测启动属性是否被完全设置
                }
            }
    块中去检测属性是否被正确设置,如果没有被设置,则设置条件取消某方法的执行
      

  5.   

    我用另外一种方法解决了
    把连接字符串设成公有属性,可以有默认值
    也没有用load 事件了
    另谢谢jointan() 
    我研究一下