下面是我的代码,List_sheet_name是一个组合框
List_sheet_name.Items.Clear();
List_sheet_name.Items.Insert(0,"Select a table from Sheet");
for (int i = 0; i < Sheets.Rows.Count; i++)
{
List_sheet_name.Items.Add(Sheets.Rows[i]["TABLE_NAME"].ToString());
}
List_sheet_name.SelectedIndex = 0;
//List_sheet_name.SelectedIndex = List_sheet_name.FindStringExact("Select a table from Sheet");
将SelectIndex设置为零(最后两行)后,它也会自动调用SelectedIndexChanged事件。有人能告诉我为什么会这样吗?
答案 0 :(得分:1)
最初,它是-1。如果设置为0,则将调用SelectedIndexChanged。
每次将其设置为另一个值时,都会引发SelectedIndexChanged。对于setbehind中的set,您可以使用变量bool _codeBehind,在更改SelectedIndex之前设置它并在事件处理程序中进行评估
private bool _cmbSelIdxIntern = false;
void YourMeth()
{
_cmbSelIdxIntern = true;
cmbTest.SelectedIndex = 0;
_cmbSelIdxIntern = false;
}
private void cmbTest_SelectedIndexChanged(object sender, EventArgs e)
{
if (_cmbSelIdxIntern)
{
return;
}
}
答案 1 :(得分:1)
根据MSDN,该事件会对所有SelectedIndex
更改做出反应。如果您将索引更改为与前一个值相等的新值,则该事件不会再次触发,您需要手动调用它。
如果您不希望在设置SelectedIndexChanged
时调用SelectedIndex
事件,则应在SelectedIndexChanged
事件中检查发件人对象(即{ {1}})重点突出。
ComboBox