我有一个以ComboBox为模型的控件。我希望呈现该控件,使控件border看起来像标准Windows ComboBox的控件。具体来说,我已按照MSDN文档进行了操作,除了控件被禁用时的呈现之外,控件的所有呈现都是正确的。
需要说明的是,这是针对启用了Visual Styles的系统。此外,除了禁用控件周围的边框(与禁用的ComboBox边框颜色不匹配)之外,控件的所有部分都能正确呈现。
我正在使用VisualStyleRenderer类。MSDN建议对ComboBox控件的TextBox部分使用VisualStyleElement.TextBox
元素,但标准禁用的TextBox和标准禁用的ComboBox绘制方式略有不同(一个有浅灰色边框,另一个有浅蓝色边框)。
如何正确呈现处于禁用状态的控件?
3条答案
按热度按时间vhmi4jdf1#
我不能100%确定这是否是您要查找的内容,但您应该检查System. Windows. Forms. VisualStyles-namespace中的VisualStyleRenderer。
由于VisualStyleRenderer在用户未启用视觉样式时无法工作(他/她可能正在运行"经典模式"或Windows XP之前的操作系统),因此应始终回退到ControlPaint类。
然后在绘制时这样做:
希望能有所帮助!
ar7v8xwq2#
ControlPaint方法对此有用吗?这是我通常用于定制呈现控件的方法。
sxissh063#
添加到Patrik提供的answer,我试图使用VisualStyleRenderer class以及,但无法得到正是我想要的。
我发现你可以使用一些没有记录的类名来代替。
VisualStyleRenderer()
构造函数允许一个字符串类值。如果你足够幸运能够找到你想要的(就像我下面所做的),那么你可以使用VisualStyleElement
类中定义的样式之外的样式。完整示例