동적으로 채워지는 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
}
선택 사항이 변경되면 다시 게시 할 수있는 목록이 있습니까? 또는 포스트 백을 발생시키는 다른 컨트롤을 사용하고 있습니까? 문제는 서버가 선택한 항목이 변경되었다는 정보를 클라이언트에서 실제로 수신하는 타이밍 인 것으로 보입니다. – Renan
아니요, selectedindexchanged에서 볼 수있는 코드는 지금까지 가지고있는 유일한 코드입니다.이 문제가 발생했기 때문입니다. 내 콤보 상자와 나는 같은 문제가있어 메시지 상자가 팝업되면 마지막 항목이 선택되지만 메시지 상자를 닫으면 선택한 항목이 다시 선택됩니다. 그래서 그것은 또한 이상하게 생각합니다. – Lewis
'Item' 인스턴스화는'FormDeelnemers_Load'의'foreach' 루프 밖에 있습니다. –