2017-05-28 9 views
0

コンボボックスがあり、DrawModeをOwnerDrawFixedに変更し、DrawItemイベントを処理しましたが、selectedIndexを-1に変更しようとしたとき、そのためSelectedIndexChangedは機能しません。私はDropDownList DrawModeコンボボックスのWinFormでOwnerDrawFixedモードが選択されている場合、SelectedIndexChangedイベントが発生しません

OwnerDrawFixedに描画アイテムメソッドにDropDownStyleを設定している

:今

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 
    { 
    } 
} 

私は、コンボボックスがSelectedIndexにするように設定する必要がある従業員IDに値を持た-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-すべてでプログラミングのバグを隠してはいけません。 –

答えて

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

ありがとう、それは完璧に動作します.. –

関連する問題