相关疑难解决方法(0)

如何使自定义ComboBox(OwnerDrawFixed)看起来像标准的ComboBox 3D?

我正在制作一个自定义的ComboBox,继承自Winforms的标准ComboBox.对于我的自定义组合框,我定DrawModeOwnerDrawFixedDropDownStyleDropDownList.然后我写自己的OnDrawItem方法.但我这样结束了:

标准与自定义组合框

如何使我的自定义组合框看起来像标准组合?


更新1:ButtonRenderer

在四处搜索之后,我找到了这ButtonRenderer堂课.它提供了一个DrawButton静态/共享方法 - 顾名思义 - 绘制正确的3D按钮.我现在正在试验它.


更新2:什么覆盖了我的控件?

我尝试使用我能想到的各种对象的图形属性,但我总是失败.最后,我尝试了表单的图形,显然有些东西覆盖了我的按钮.

这是代码:

Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
  Dim TextToDraw As String = _DefaultText
  __Brush_Window.Color = Color.FromKnownColor(KnownColor.Window)
  __Brush_Disabled.Color = Color.FromKnownColor(KnownColor.GrayText)
  __Brush_Enabled.Color = Color.FromKnownColor(KnownColor.WindowText)
  If e.Index >= 0 Then
    TextToDraw = _DataSource.ItemText(e.Index)
  End If
  If TextToDraw.StartsWith("---") Then TextToDraw = StrDup(3, ChrW(&H2500)) ' U+2500 is "Box Drawing Light Horizontal"
  If (e.State And DrawItemState.ComboBoxEdit) > 0 Then
    'ButtonRenderer.DrawButton(e.Graphics, …
Run Code Online (Sandbox Code Playgroud)

vb.net combobox custom-controls visual-studio-2010 ondrawitem

8
推荐指数
1
解决办法
2万
查看次数