首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发自定义组合框的ondrawitem事件

触发自定义组合框的ondrawitem事件
EN

Stack Overflow用户
提问于 2012-06-07 02:56:33
回答 1查看 956关注 0票数 1

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

代码语言:javascript
复制
 protected override void OnDrawItem(DrawItemEventArgs e)
        {...

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

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

代码语言:javascript
复制
 private void cmbBoxLineColor_SelectedIndexChanged(object sender, EventArgs e)
        {
Here I want the custom combobox-ComboLineStyle  control to redraw itself 


}

编辑我需要下拉来再次绘制自己的颜色时,在另一条线颜色组合changes.Color

代码语言:javascript
复制
 lineColorSel = cmbBoxLineColor.SelectedValue;
ComboBoxItemLineStyle itemSolid = new ComboBoxItemLineStyle ("Solid Line", lineColorSel);  

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

谢谢你

EN

回答 1

Stack Overflow用户

发布于 2012-06-07 03:43:49

您可以在继承System.Windows.Forms.Control的任何对象上调用Invalidate()以强制其重画

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

代码语言:javascript
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10920383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档