2012-06-06 3 views
1

Как я могу сделать событие ondraw Сценарий: Я использую пользовательские combobox с onDrawItem в моей форме. DrawItem такойстрельба ondrawitem событие пользовательских комбо

protected override void OnDrawItem(DrawItemEventArgs e) 
     {... 

     } 
Question: How do I make the custom combobox ComboLineStyle redraw 

себя на SelectedIndex изменился другого cmbBoxLineColor. В конечном итоге мне нужен способ перерисовать все строки combobox на каждом выбранном индексе, измененном .

private void cmbBoxLineColor_SelectedIndexChanged(object sender, EventArgs e) 
     { 
Here I want the custom combobox-ComboLineStyle control to redraw itself 


} 

EDIT мне нужно ниспадающее меню, чтобы сделать себя еще раз, когда цвет в другой linecolorcombo changes.Color

lineColorSel = cmbBoxLineColor.SelectedValue; 
ComboBoxItemLineStyle itemSolid = new ComboBoxItemLineStyle ("Solid Line", lineColorSel); 

Цвет свойство в моем linestylecomboboxitem будет иметь SelectedValue в Linecolor комбо. Таким образом, linestyle combo должен обновить/аннулировать себя и перерисовать себя с помощью этой строкиColorSel.

Спасибо и

ответ

0

Вы можете вызвать Invalidate() на что-нибудь, что наследуется System.Windows.Forms.Control, чтобы заставить его перекроить

ЭРВО и пример того, как я сделал бы заказ сделать для выбранного пункт

protected override void OnDrawItem(DrawItemEventArgs e) 
    { 

     if (e.State == DrawItemState.Selected) 
     { 
      ... 
     } 
     else 
     { 
      ... 
     } 

     //or you could do it like this 
     //if(e.Index == this.SelectedIndex) 
     //{ 
     //} 

     ... 

    } 

    protected override void OnSelectedIndexChanged(EventArgs e) 
    { 
     base.OnSelectedIndexChanged(e); 
     base.Invalidate(); 
    } 
+0

как я могу отправить выбранный индекс в качестве параметра, когда я Invalidate/Refresh ComboBoxItem item1Solid = новый ComboBoxItem ("Solid Line", SelectedIndex) .then перерисовки с использованием SelectedIndex – user575219

+0

вы не должны. вы можете определить, рисует ли ваш OnDrawItem выбранный элемент, проверив DrawItemEventArg.State – bit2know

+0

Invalidate/Refresh, похоже, не перерисовывает элемент управления. И даже если они это сделают, у них нет выбранного элемента. – user575219

Смежные вопросы