触发自定义组合的ondrawitem事件

时间:2012-06-06 18:56:33

标签: c#

如何筹集提款活动 场景:我在表单中使用带有onDrawItem的自定义组合框。 drawitem是这样的

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

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

本身在selectedindex上改变了另一个cmbBoxLineColor。最终我需要一种方法来重新绘制每个选定索引更改的组合框的所有行 。

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


}

EDIT  当另一个linecolorcombo中的颜色发生变化时,我需要下拉列表再次绘制自己.Color

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

我的linestylecomboboxitem中的color属性将具有linecolor组合的selected值。因此,linestyle组合应该刷新/使自身无效,并使用此lineColorSel重绘自身。

谢谢你

1 个答案:

答案 0 :(得分:0)

您可以在继承System.Windows.Forms.Control以强制重绘的任何内容上调用Invalidate()

下面是我如何为所选项目进行自定义绘制的示例

    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();
    }