我在項目中有DropDownList
。這DropDownList
包含SelectedIndexChanged
事件:下拉列表檢查索引是否通過代碼或選擇更改
private void cbo_SelectedIndexChanged(object sender, EventArgs e){......}
是否有可能檢查索引是在代碼改變,如:
cbo.SelectedIndex = placering;
,或者改變通過用戶交互發生了什麼?
我在項目中有DropDownList
。這DropDownList
包含SelectedIndexChanged
事件:下拉列表檢查索引是否通過代碼或選擇更改
private void cbo_SelectedIndexChanged(object sender, EventArgs e){......}
是否有可能檢查索引是在代碼改變,如:
cbo.SelectedIndex = placering;
,或者改變通過用戶交互發生了什麼?
由於DropDownList沒有屬性Focused
,因爲它是ComboBox
控制在WinForms
這並不容易。一種方法是添加自定義標誌,並在更改SelectedIndex
屬性之前更改其值。內部事件處理程序,你可以檢查此標誌,並且重置其價值:在代碼中的某處
private volatile bool isAutoFired = false;
然後:
isAutoFired = true;
cbo.SelectedIndex = placering;
private void cbo_SelectedIndexChanged(object sender, EventArgs e)
{
if(!isAutoFired)
{
// event is fired by user
}
isAutoFired = false;
}
你可以權之前刪除代碼中的事件處理程序可編程改變選擇,那麼之後再添加它。這是我最喜歡的方法。不需要標誌。
cbo.SelectedIndexChanged -= cbo_SelectedIndexChanged;
cbo.SelectedIndex = 1 // or what you do to change the index
cbo.SelectedIndexCHanged += new EventHandler(cbo_SelectedIndexChanged);
謝謝,正是我在找的東西! – Moelbeck