2014-09-13 71 views
0

對不起再次提出這個問題,但我真的不知道如何調試。
調試器在這一行給我nullreferenceexception: if(listBox1.SelectedItem.ToString()==「Chicken $ 15」) 我認爲它給我nullreferenceexception的原因是因爲listbox1爲空,所以我想我必須初始化它。但是如何?我不知道如何初始化列表框。如何在列表框中修復nullreferenceexception?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace lab6 
{ 
    public partial class Form1 : Form 
{ 
    double total = 0; 

    int x = 0; 
    string ord = ""; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void toolStripMenuItem1_Click(object sender, EventArgs e) 
    { 

    } 

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 

    } 

    private void editToolStripMenuItem_Click(object sender, EventArgs e) 
    { 

    } 

    private void placeToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     checkBox1.Checked = false; 
     radioButton1.Checked = false; 
     radioButton2.Checked = false; 
     radioButton3.Checked = false; 
     radioButton4.Checked = false; 

     switch (checkBox1.Checked) 
     { 
     case true: 
      total += 1; 
      ord += "Water\n"; 
      break; 
     } 

     if (comboBox1.Text == "Extra Meat") 
     { 
      total += 1; 
      ord += ord + "Extra Meat\n"; 
     } 
     if (comboBox1.Text == "Extra Rice") 
     { 
      total += 1; 
      ord += "Extra Rice\n"; 

     } 
     if (comboBox1.Text == "Extra Veggies") 
     { 
      total += 1; 
      ord += "Extra Veggies\n"; 
     } 





     if (listBox1.SelectedItem.ToString() == "Chicken $15") 
     { 
      total += 15; 
      ord += " Chicken\n"; 

     } 
     else { } 



      if (listBox1.SelectedItem.ToString() == "Pizza $8") //< my pathetic attempt to figure it out with intelisense 
      { 
       total += 8; 
       ord += "Pizza\n"; 
      } 
      else 
      { 

      } 
     if (listBox1.SelectedItem.ToString() == "Spaghetti $12")//< my pathetic attempt to figure it out with intelisense 
     { 
      total += 12; 
      ord += " Spaghetti\n"; 
     } 
     else { } 
     if (listBox1.SelectedItem.ToString() == "Fries $8") 
     { 
      total += 8; 
      ord += " Fries\n"; 
     } 
     else { } 
     if (listBox1.SelectedItem.ToString() == "Burger $10") 
     { 
      total += 10; 
      ord += " Burger\n"; 
     } 
     else { } 

     //radiobutton 
     if (radioButton1.Checked) 
     { 
      total+=5; 
      ord += "Pineapple Juice\n"; 
     } 
     if (radioButton2.Checked) 
     { 
      total+=6; 
      ord += "Mango Juice\n"; 
     } 
     if (radioButton3.Checked) 
     { 
      total+=7; 
      ord += "Apple Juice\n"; 
     } 
     if (radioButton4.Checked) 
     { 
      total+=8; 
      ord += "Orange Juice\n"; 
     } 

     MessageBox.Show("Order Done"); 
     listBox1.SelectedItems.Clear(); 

    } 

    private void clearToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     ord = ""; 
     total = 0; 
    } 

    private void radioButton1_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void label3_Click(object sender, EventArgs e) 
    { 

    } 

    private void radioButton2_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void radioButton4_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void radioButton3_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 

    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

    private void label4_Click(object sender, EventArgs e) 
    { 

    } 

    private void displayToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Order: " + ord+"\nTotal: "+total); 


    } 

    private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 
} 

}

+0

'NullReferenceException'是初級程序員一個常見的情況。所提供的鏈接應該有助於你理解問題。然後使用調試器來查找什麼/哪裏/何時有一個變量是'null'。 – 2014-09-13 11:15:00

+0

你確認'listBox1'是'null'嗎?或者是'listBox1.SelectedItem'什麼是'null'?您可以使用調試器對代碼進行調試,在代碼行中放置斷點,並在運行時檢查調試器中的值。 – David 2014-09-13 11:15:24

回答

0

它看起來像你假設listBox1.SelectedItem從未null,嘗試做財產以後像

if (listBox1.SelectedItem != null) 
{ 
    // code here 
} 
+0

謝謝。我試過這個:if(listBox1!= null) { if(listBox1.SelectedItem.ToString()==「Chicken $ 15」) { total + = 15; ord + =「Chicken \ n」; } 其他{}}它沒有工作 – 2014-09-13 11:23:57

+0

對不起,我的例子中有一個錯誤,我現在糾正了它。其實我的意思是檢查所選項目是否爲空,而不是列表框 – Joeb454 2014-09-13 11:25:26

+0

它不會再拋出異常,但問題是它完全忽略了內部的語句。 – 2014-09-13 11:30:26