2013-05-07 1 views
3

동적으로 채워지는 C#의 목록 상자가 있습니다. 목록 상자의 selectedindex_changed에 문제가 있습니다. 매번 선택한 항목이 아니라 목록 상자의 마지막 항목의 값을 제공합니다. 나는 다른 페이지에서 콤보 박스와 같은 문제가있다.Listbox는 항상 선택된 항목의 잘못된 값을 반환합니다.

왜 이런 식으로 발생하는지 모르겠습니다. 아무도 내가 뭘 잘못하고 있는지 아니?

먼저 ID를 가진 텍스트를 목록 상자에 넣을 새 개체 항목을 만듭니다.

public class Item 
    { 
     public string Text { get; set; } 
     public int Value { get; set; } 

     public override string ToString() 
     { 
      return Text; 
     } 
    } 

여기서는 텍스트와 ID 값으로 목록 상자를 채 웁니다. 이 잘 작동, 목록 상자 채워집니다 가져야합니다.

private void FormDeelnemers_Load(object sender, EventArgs e) 
    { 
     BLPersoon blPersoon = new BLPersoon(); 
     DBOpdracht.PersoonDataTable personen = blPersoon.GetAllPersonen(); 

     //Item item = new Item(); -> edit: delete this 

     foreach (DBOpdracht.PersoonRow persoon in personen) 
     { 
      Item item = new Item(); -> edit: add this here 
      item.Text = persoon.naam; 
      item.Value = persoon.ID; 
      listBoxPersonen.Items.Add(item); 
     } 
    } 

여기에 문제가 있습니다. 그것은 내가 선택한 것이 아닌 목록 상자의 마지막 항목의 값을 제공합니다. 내가 선택한 것을 어떻게 얻습니까?

private void listBoxPersonen_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int nummer = (listBoxPersonen.SelectedItem as Item).Value; 
     MessageBox.Show(nummer.ToString()); 
     //MessageBox.Show(listBoxPersonen.SelectedItem.ToString()); -> same problem 
    } 
+0

선택 사항이 변경되면 다시 게시 할 수있는 목록이 있습니까? 또는 포스트 백을 발생시키는 다른 컨트롤을 사용하고 있습니까? 문제는 서버가 선택한 항목이 변경되었다는 정보를 클라이언트에서 실제로 수신하는 타이밍 인 것으로 보입니다. – Renan

+0

아니요, selectedindexchanged에서 볼 수있는 코드는 지금까지 가지고있는 유일한 코드입니다.이 문제가 발생했기 때문입니다. 내 콤보 상자와 나는 같은 문제가있어 메시지 상자가 팝업되면 마지막 항목이 선택되지만 메시지 상자를 닫으면 선택한 항목이 다시 선택됩니다. 그래서 그것은 또한 이상하게 생각합니다. – Lewis

+3

'Item' 인스턴스화는'FormDeelnemers_Load'의'foreach' 루프 밖에 있습니다. –

답변

0

@bmused에게 감사의 말을 전한 사람 덕분에 아무도 정확히 무슨 일이 일어 났는지 설명 할 수 있었습니까?

나는 을 사용하여 항목을 추가하는 combobox과 동일한 문제가있었습니다. 질문은 삽입하는 동안 항목의 인스턴스화가 combobox에서 선택하는 것과 무슨 관련이 있습니까?

P. 죄송합니다. 관리자가 댓글을 달 수 없습니다.