SelectIndexChanged 이벤트를 사용하여 사용자 및 프로그래밍 방식으로 변경 내용을 캡처 할 수있는 콤보 상자가 있습니다.프로그래밍 방식으로 인덱스 0 (-1에서)을 선택할 때 Combobox가 실행되지 않음
콤보 박스에 바인딩 된 목록을 지우고 다시로드하면 자연히 인덱스 -1로 이벤트 핸들러가 실행됩니다.
는하지만 selectedIndex의로 = -1 두 경우 모두
combobox1.SelectedIndex = 0 ; // will NOT fire the event.
하지만
combobox1.SelectedIndex = 1 ; // or higher number WILL fire the event.
나는 프로그래밍 selextedindex을 변경하고 이벤트가 발생 될 것으로 예상하고있다.
간단한 동작으로 동작을 확인했습니다.
namespace cmbTest
{
public partial class Form1 : Form
{
private BindingList<string> items = new BindingList<string>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = items;
loadItems();
}
private void loadItems()
{
items.Add("chair");
items.Add("table");
items.Add("coffemug");
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Fired with selected item index:" + comboBox1.SelectedIndex);
}
private void button1_Click(object sender, EventArgs e)
{
int index = comboBox1.SelectedIndex;
// Clear and reload items for whatever reason.
items.Clear();
loadItems();
// try select old item index; if it doesnt exists, leave it.
try { comboBox1.SelectedIndex = index; }
catch { }
}
}
}
양식에 combobox1 및 button1이 있습니다. 선명도 (I 희망)에 대한
편집 :
- 프로그램 실행. 메시지 "선택한 항목 인덱스로 실행 : 0"
- 조회 버튼. 메시지 "선택한 항목 색인으로 시작 : -1"
- '테이블'을 선택하십시오. 메시지 "선택한 항목 인덱스로 실행 : 1"
- 조회 버튼. 메시지 "선택한 항목 색인으로 시작되었습니다 : -1"AND "선택한 항목 색인으로 실행 : 1"
내가 "의자"도를 선택하면 내가 프로그래밍 0
에 인덱스를 변경하기 때문에, 버튼을 눌렀을 때이 메시지를 얻을 것으로 예상 그래서, 나는 그것이 어떻게 예상대로 이유가 작동하지 않는, 허용 가능한 해결 방법은 무엇입니까?
예외를 삼키는를? 그 좋지 않다. 예외가 Throw되고 있는지 어떤지를 확인한다. catch {}를 (를) 참조하는 – user3185569
? try 문은 재로드 목록에 항목이 더 이상 존재하지 않는 경우에만 발생합니다. 이 경우에는 해당되지 않으며이 예제에서는 필요하지 않습니다. –
코드에서'comboBox1.SelectedIndex = 0;'을 볼 수 없습니다. 문제가 정확히 어디입니까? – user3185569