触发自定义组合的绘制项事件

本文关键字:绘制 事件 组合 自定义 | 更新日期: 2023-09-27 18:36:22

如何引发 ondraw 事件场景:我在窗体中使用带有 onDrawItem 的自定义组合框。抽奖项目是这样的

 protected override void OnDrawItem(DrawItemEventArgs e)
        {...
        }
Question: How do I make the custom combobox ComboLineStyle redraw 

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

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

}

编辑 我需要下拉列表在另一个线条颜色组合中的颜色发生变化时再次绘制自己。颜色

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

我的线型组合框中的颜色属性将具有线色组合的选定值。因此,线型组合应该刷新/使自身无效,并使用此线颜色塞尔重新绘制自己。

谢谢

触发自定义组合的绘制项事件

您可以在继承 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();
    }