2016-12-20 46 views
-4

我是初學者,我有一個小問題。我需要檢查它是不是空的組合框。現在,當我點擊按鈕,組合框給出零誤差NullReferenceException當我嘗試在組合框中選擇

「類型的未處理的異常‘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"; 
      } 
     } 
    } 
+0

價值在哪裏'wersja'聲明? – garfbradaz

回答

1

在你的情況下,或者Combobox.SelectedItemCombobox1.SelectedItemnull如果它們是不同的組合框。在c#null.ToString()拋出NullReferenceException這意味着如果該值爲null意味着肯定會拋出異常。我想建議你使用這樣的:

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

這裏你正在檢查空,如果不爲空,然後檢查其與"Audi"

+0

謝謝你!解決方法是「if(Combobox.SelectedIndex> = 0)」 –

+0

@非幸運你已經在這裏足夠長的時間知道這個問題已被複制*許多次*之前。請標記重複的問題,而不是爲每個問題提供量身定製的答案。謝謝! – Rob

+1

我不是第一個回答這個問題的人,當我看到問題2個答案時,這個問題已經發布在這裏,並且令人困惑和不夠清楚,這就是爲什麼我已經回答,請原諒我,如果它是錯誤的,無論如何感謝您的評論@搶 –

1

你在打字錯誤。更換

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

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

LOL ...那麼這會導致編譯器錯誤,而不是運行時異常 – Rahul

1
string wersja = string.Empty; 
if(Combobox.SelectedIndex > 0) 
{ 
    if (Combobox.SelectedItem.ToString() != "Audi") 
    { 
     wersja= "110"; 
    } 
    else 
    { 
     wersja = "101"; 
    } 
} 
+0

儘管此代碼片段可能會解決問題,[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code - 基於答案)真的有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess

相關問題