1

如何引发 ondraw 事件场景:我在表单中使用带有 onDrawItem 的自定义组合框。drawitem是这样的

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

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

selectedindex 上的自身已更改为另一个 cmbBoxLineColor。最终,我需要一种方法来在每个 selectedindex changed 上重绘组合框的所有行。

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


}

编辑当另一个 linecolorcombo 中的颜色发生变化时,我需要下拉菜单再次绘制自己。颜色

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

我的 linestylecomboboxitem 中的 color 属性将具有 linecolor 组合的 selectedvalue。所以线型组合应该刷新/无效自己并用这个 lineColorSel 重新绘制自己。

感谢你

4

1 回答 1

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();
    }
于 2012-06-06T19:43:48.797 回答