2013-07-30 2 views
-3

이 코드를 가지고,하지만 난 목록 상자의 레코드 중 하나를 클릭 할 때이 오류가 :오류 : 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(); 
      }} } } 

문제 : 이것은 내 코드입니다

System.NullReferenceException 

을 다음 줄에있는 것일 수 있습니다 :

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

제발 알려주시겠습니까?

+0

내가 오류를 가지고 있기 때문에 내가 여기에 복사 : ... 포스트는 대부분 코드 내 코드에서 내가 정상이) 형태 인 경우 – Kate

+0

당신이 목록 상자에서 모든 항목이 있습니까 짐을 실은? –

+0

먼저 오류가 어디에 있는지 확인하고 디버거를 사용하여이 작업을 수행하십시오. – glautrou

답변

2

이 시도 :

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

OK, 감사합니다! :) – Kate

0

이것은 문제가되는 것 같습니다.

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

SelectedValue가 null이며, 당신은 예외를 throw ToString를 호출하고 있습니다. 이유는 단지 또한, 당신이 listBox1를 직접적으로 호출뿐만 아니라 l (listBox1.SelectedValue = l.SelectedIndex;)를 사용하는

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

하지. 둘 다 동일한 ListBox를 참조합니다.

+0

문제는 여기에 없습니다. 시도해보십시오 ... – Kate

+0

'txtName.Text = listBox1.SelectedValue.ToString(); 예외. 나는'txtName'이라고 불리는 TextBox를 가지고 있다고 가정하고 (그렇지 않으면 컴파일되지 않을 것입니다), 문제는'l' 또는'SelectedValue'에 있습니다. 'listBox1.SelectedValue = l.SelectedIndex; '가 예외를 던지지 않았다고 생각하면 null이 될 수 없습니다. 따라서'SelectedValue'만이 null이고 ToString을 호출하고 있습니다. 'txtName.Text = l.SelectedIndex.ToString();을 사용하면 여전히 예외가 발생합니까? – keyboardP

관련 문제