2012-04-17 77 views
0

当我尝试将项目添加到组合框,我得到:Visual C#combox1.Items.Add(“test”);错误?

“的NullReferenceException是未处理” “不设置到对象的实例对象引用。”

无论我如何将代码添加到组合框中,都会发生这种情况。

comboBox1.Items.Add("test"); 

try 
{ 
    Parties.Open(); 
    String test = "SELECT PartyName FROM Parties WHERE PartyID = 4"; 
    selectParty = new OleDbCommand(test, Parties); 
    OleDbDataReader testing = selectParty.ExecuteReader(); 
    while (testing.Read()) 
    { 
     MessageBox.Show(testing.GetValue(0).ToString()); 
     comboBox1.SelectedIndex = comboBox1.Items.Add(testing.GetValue(0).ToString()); 
    } 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.Message); 
    return; 
} 

(乱码以上......无奈!)

我很新的.NET和C#,我不明白是怎么回事,无论我去哪里都告诉我,我的代码应该能够工作,但事实并非如此。 MSDN简单列出:

comboBox1.Items.Add("Text"); 
+1

你在哪里声明并创建了comboBox1? – Jason 2012-04-17 01:48:08

+0

当你通过这个进行调试时,哪个对象是'null'?你期望该物体被初始化在哪里?另外,请注意,您正在将“有价值的信息”扔到“catch”块中。您显示该消息,但忽略堆栈跟踪。堆栈跟踪会告诉你哪一行代码抛出异常。 (你也可以忽略任何潜在的内部异常,但我怀疑在这种情况下是否有这种异常。) – David 2012-04-17 01:50:03

+0

@Jason formName.Designer.cs 'private System.Windows.Forms.ComboBox comboBox1;' – mawburn 2012-04-17 01:51:04

回答

3

你在哪里试图添加项目到组合框?

如果您在InitializeComponent()之前调用上述代码,则会引发异常。在窗体构造函数中。或者如果您在代码中的其他地方分配组合框。

确保所有代码都是在InitializeComponent()之后完成的,这是在设计器中调用代码的方法。

0

当设计师用于修改UI时,visual studio将添加一个InitializeComponents()方法。

您应该在窗体构造函数体中调用InitializeComponents()方法。如果代码与控件交互,则需要在InitializeComponent调用之后放置代码。任何不与控件交互的代码在InitializeComponents()之上或之下都可以。

另外,如果您双击设计师Visual Studio中的控件将创建一个Form_Load事件处理程序,该处理程序在窗体构造函数之后运行。

+0

有时甚至FormLoad()似乎太早;我曾经有过Shown()事件正常工作但Load()没有的情况。 – 2012-04-17 04:38:02