C# 触发自定义组合的ondrawitem事件
如何发起ondraw活动 场景:我在表单中使用带有onDrawItem的自定义组合框。 这个项目就是这样C# 触发自定义组合的ondrawitem事件,c#,C#,如何发起ondraw活动 场景:我在表单中使用带有onDrawItem的自定义组合框。 这个项目就是这样 protected override void OnDrawItem(DrawItemEventArgs e) {... } Question: How do I make the custom combobox ComboLineStyle redraw 选定索引上的自身已更改为另一个CMBOxLineColor。最终,我需要一种方法来重新绘制每个s
protected override void OnDrawItem(DrawItemEventArgs e)
{...
}
Question: How do I make the custom combobox ComboLineStyle redraw
选定索引上的自身已更改为另一个CMBOxLineColor。最终,我需要一种方法来重新绘制每个selectedindex上combobox的所有行
.
编辑
当另一个linecolorcombo中的颜色发生变化时,我需要下拉列表再次绘制自身。颜色
lineColorSel = cmbBoxLineColor.SelectedValue;
ComboBoxItemLineStyle itemSolid = new ComboBoxItemLineStyle ("Solid Line", lineColorSel);
我的LineStyleComboxItem中的color属性将具有linecolor组合的selectedvalue。因此,linestyle组合应该刷新/失效自身,并使用此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();
}
当我失效/刷新ComboBoxItem item1Solid=new ComboxItem(“实线”,selectedIndex)时,如何将所选索引作为参数发送。然后使用selectedIndex重新绘制,您不必这样做。通过检查DrawItemEventArg.StateInvalidate/Refresh似乎没有重新绘制控件,可以判断OnDrawItem是否正在绘制选定项。即使他们有,他们也没有选定的项目。我不确定你是否正确回答了这个问题。在选择另一个linecolor组合时,这一个linestylecombo应该自我更新。因此,换言之,您希望有一个组合框,用户可以在其中选择颜色,并且您希望它能够更改其他组合框的线条颜色?那么,为什么不在“颜色更改”组合框中放置一个公共LineColor属性,以便在设置时也调用Invalidate/base.OnDraw。然后在MDRAW方法中获取线条颜色。
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();
}