【问题标题】:NullReferenceException when i try to choose in combobox [duplicate]当我尝试在组合框中选择时出现 NullReferenceException [重复]
【发布时间】:2017-05-05 18:30:02
【问题描述】:

我是初学者,我有一个小问题。我需要检查它是否不是空的模具组合框。现在当我点击按钮和组合框给出一个空错误

“'System.NullReferenceException' 类型的未处理异常 发生在 WindowsFormsApplication4.exe 中

附加信息:对象引用未设置为对象的实例。

 private void Wykonaj_Click(object sender, EventArgs e)
        {           

        if (Combobox1.SelectedIndex.ToString() != null)
        {
            if (Combobox.SelectedItem.ToString() != "Audi")
            {
                wersja= "110";
            }
            else
            {
                wersja = "101";
            }
        }
    }

【问题讨论】:

  • wersja 声明在哪里?

标签: c# winforms combobox


【解决方案1】:

您输入错误。替换

if (Combobox.SelectedItem.ToString() != "Audi")

if (Combobox1.SelectedItem.ToString() != "Audi")

【讨论】:

  • LOL ... 那么这将导致编译器错误而不是运行时异常
【解决方案2】:
string wersja = string.Empty;
if(Combobox.SelectedIndex > 0)
{
    if (Combobox.SelectedItem.ToString() != "Audi")
    {
        wersja= "110";
    }
    else
    {
        wersja = "101";
    }
}

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
【解决方案3】:

在您的情况下,Combobox.SelectedItemCombobox1.SelectedItemnull 如果它们是不同的组合框。在 c# 中 null.ToString() throws NullReferenceException 这意味着如果该值为 null 意味着肯定会抛出异常。我想建议你这样使用:

if (Combobox1.SelectedIndex >= 0)
{
    if (Combobox.SelectedItem != null && Combobox.SelectedItem.ToString() != "Audi")
       wersja = "110";
    else
       wersja = "101";
}

在这里您正在检查 null,如果它不为 null,则使用 "Audi" 检查其值

【讨论】:

  • 谢谢!!解决方案是“如果(Combobox.SelectedIndex >= 0)”
  • @un-lucky 您已经在这里待了足够长的时间,知道这个问题已经被重复了 很多次 次。请将此类问题标记为重复问题,而不是为每个问题提供量身定制的答案。谢谢!
  • 我不是第一个回答这个问题的人,当我看到这里已经发布的问题 2 个答案并且令人困惑且不够清楚时,这就是我回答的原因,如果有错误请见谅,无论如何感谢您的评论@Rob
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多