0

当我尝试将项目添加到组合框中时,我得到:

“未处理 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");
4

2 回答 2

3

您要在哪里向 ComboBox 添加项目?

如果在 InitializeComponent(); 之前调用上述代码,将会抛出异常。在表单构造函数中。或者,如果您在代码中的其他地方分配组合框。

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

于 2012-04-17T01:59:48.177 回答
0

当使用设计器修改 UI 时,visual studio 会添加一个 InitializeComponents() 方法。

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

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

于 2012-04-17T02:04:27.087 回答