2013-07-30 131 views
-3

我有這樣的代碼,但是當我點擊列表框中記錄的一個我有這樣的錯誤:錯誤信息:System.NullReferenceException

System.NullReferenceException 

這是我的代碼:

namespace CestovniPrikaz 
{ 
    public partial class Form2 : Form 
    { 
     SqlConnection cn = new SqlConnection(@"Data Source=(Loca..Security=True"); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataReader dr; 

     public Form2() 
     { InitializeComponent(); 
      loadlist(); } 
     private void Form2_Load(object sender, EventArgs e) 
     { cmd.Connection = cn; 
      loadlist(); } 

     private void loadlist() 
     { listBox1.Items.Clear(); 
      cmd.Connection = cn; 
      cn.Open(); 
      cmd.CommandText = "select Name from Person"; 
      dr = cmd.ExecuteReader(); 
      if (dr.HasRows) 
      { 
       while(dr.Read()) 
       { 
        listBox1.Items.Add(dr[0].ToString());     
       } } 
      cn.Close(); }  

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     {ListBox l = sender as ListBox; 
      if (l.SelectedIndex != -1) 
      { 
       listBox1.SelectedValue = l.SelectedIndex; 
       txtName.Text = listBox1.SelectedValue.ToString(); 
      }} } } 

問題大概在這一行:

txtName.Text = listBox1.SelectedValue.ToString(); 

你有什麼想法嗎?

+0

我複製到這裏,因爲我有錯誤:崗位大多是代碼......在我的代碼,我有正常;) – Kate

+0

你有沒有在列表框中的任何項目時,形式是裝? –

+0

首先請確定你的錯誤在哪裏,使用調試器來做到這一點。 – glautrou

回答

2

試試這個:

txtName.Text = l.SelectedItem.ToString(); 
+0

其確定,謝謝! :) – Kate

0

這似乎是問題所在。

listBox1.SelectedValue = l.SelectedIndex; 
txtName.Text = listBox1.SelectedValue.ToString(); 

SelectedValue爲空和你打電話ToString會拋出異常。爲什麼不只是做

txtName.Text = l.SelectedIndex.ToString(); 

而且,你打電話listBox1直接以及使用llistBox1.SelectedValue = l.SelectedIndex;)。他們都引用相同的ListBox。

+0

問題是不是在這裏,我嘗試它... – Kate

+0

你說'txtName.Text = listBox1.SelectedValue.ToString();'是拋出例外。我假設你有一個名爲'txtName'的文本框(否則它不會編譯),所以問題出在'l'或'SelectedValue'上。考慮到'listBox1.SelectedValue = l.SelectedIndex;'沒有拋出異常,它不能是'l',它是空的。因此,只有'SelectedValue'爲null,並且您正在調用ToString。如果你使用'txtName.Text = l.SelectedIndex.ToString();'是否仍然會拋出異常? – keyboardP