【问题标题】:Visual C# combox1.Items.Add("test"); Error?Visual C# combox1.Items.Add("test");错误?
【发布时间】:2012-04-28 08:47:54
【问题描述】:

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

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

【问题讨论】:

  • 你在哪里声明和创建了comboBox1?
  • 通过这个调试的时候,null是哪个对象?您希望该对象在哪里初始化?另外,请注意您在catch 块中丢弃了有价值的信息。您显示消息,但忽略堆栈跟踪。堆栈跟踪将告诉您哪一行代码引发了异常。 (您也忽略了任何潜在的内部异常,尽管我怀疑在这种特殊情况下是否存在异常。)
  • @Jason formName.Designer.cs private System.Windows.Forms.ComboBox comboBox1;
  • @MadBurn:在您之前的评论中,您显示了 comboBox1 的声明位置,但没有显示它的初始化位置。我会认为 Windows 窗体会为你处理这部分,但如果你不小心以某种方式短路了窗体设计器的那部分,那么可能会导致这种情况。
  • @MadBurn:选择@nmaait 的答案,而不是让我将我的评论转换为答案。他提供了更具体的信息。 (尤其是关于InitializeComponent() 的部分,因为我不会做很多 WinForms,所以我不会猜到。)

标签: c# .net winforms visual-studio-2010 .net-3.5


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    Visual Studio 会在使用设计器修改 UI 时添加 InitializeComponents() 方法。

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

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

    【讨论】:

    • 有时甚至 FormLoad() 似乎还为时过早;我曾经遇到过 Shown() 事件运行良好但 Load() 没有运行的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2014-01-12
    • 2018-12-04
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多