[英]How to render a control to look like ComboBox with Visual Styles enabled?
我有一个以ComboBox为模型的控件。 我想呈现控件,以便控件边框看起来像标准Windows ComboBox 的边框。 具体来说,我遵循了 MSDN 文档,除了禁用控件时的呈现外,控件的所有呈现都是正确的。
需要明确的是,这是针对启用了视觉样式的系统。 此外,除了禁用控件周围的边框外,控件的所有部分都正确呈现,该边框与禁用的ComboBox 边框颜色不匹配。
我正在使用VisualStyleRenderer类。 MSDN 建议对ComboBox控件的TextBox部分使用VisualStyleElement.TextBox
元素,但标准禁用TextBox和标准禁用ComboBox 的绘制略有不同(一个具有浅灰色边框,另一个具有浅蓝色边框)。
如何在禁用状态下正确呈现控件?
我不能 100% 确定这是否是您要查找的内容,但您应该查看 System.Windows.Forms.VisualStyles 命名空间中的VisualStyleRenderer 。
由于如果用户没有启用视觉样式(他/她可能正在运行“经典模式”或 Windows XP 之前的操作系统),VisualStyleRenderer 将无法工作,因此您应该始终回退到 ControlPaint 类。
// Create the renderer.
if (VisualStyleInformation.IsSupportedByOS
&& VisualStyleInformation.IsEnabledByUser)
{
renderer = new VisualStyleRenderer(
VisualStyleElement.ComboBox.DropDownButton.Disabled);
}
然后在绘图时这样做:
if(renderer != null)
{
// Use visual style renderer.
}
else
{
// Use ControlPaint renderer.
}
希望能帮助到你!
任何ControlPaint方法对此有用吗? 这就是我通常用于自定义呈现控件的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.