2017-05-28 42 views
0

我有組合框並將DrawMode更改爲OwnerDrawFixed並處理了DrawItem事件,但現在當我嘗試將selectedIndex更改爲-1時,因爲數據庫中沒有值。所以SelectedIndexChanged不起作用。當在Winform中爲Combobox選擇OwnerDrawFixed模式時,SelectedIndexChanged事件不會觸發

我已經設置DropDownStyleDropDownList DrawModeOwnerDrawFixed

繪製項目方法:

private void cmbDetTechnician_DrawItem(object sender, DrawItemEventArgs e) 
{ 
    try 
    { 
     int index = e.Index >= 0 ? e.Index : 0; 
     var brush = Brushes.Black; 
     e.DrawBackground(); 
     e.Graphics.DrawString(lstTechnician[index].DisplayName.ToString(), e.Font, brush, e.Bounds, StringFormat.GenericDefault); 
     e.DrawFocusRectangle(); 
    } 
    catch 
    { 
    } 
} 

現在,我沒有價值,員工ID,然後在下拉框應設置爲SelectedIndex爲-1,但它不工作:

if(_EmployeeID == -1){cmbDetTechnician.SelectedIndex = -1; } else { cmbDetTechnician.SelectedValue = _EmployeeID; } 

我也有試圖處理這個組合框的SelectedIndexChanged。但上述聲明後沒有提出事件。

private void cmbDetTechnician_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    CustomMessageBox.Show("HI"); 
} 

請讓我知道我做錯了什麼或有什麼更好的建議。

+0

不要隱藏用的try/catch-EM-ALL /什麼也不做編程錯誤。 –

回答

0

這個問題似乎是出,而不是在的SelectedIndex ...

if(e.Index >= 0) 
{ 
    int index = e.Index; 
    var brush = Brushes.Black; 
    e.DrawBackground(); 
    e.Graphics.DrawString(lstTechnician[index].DisplayName.ToString(), e.Font, brush, e.Bounds, StringFormat.GenericDefault); 
    e.DrawFocusRectangle(); 
} 
else 
{ 
    e.DrawBackground(); 
    e.DrawFocusRectangle(); 
} 
+0

謝謝,它完美的工作.. –

相關問題