c# -如何将控件呈现为启用视觉样式的组合框?

Translate

我有一个模仿的控件组合框。我想呈现控件,以便控件边境看起来像一个标准Windows ComboBox。具体来说,我遵循了MSDN文档,并且所有控件的呈现都是正确的,除了禁用控件时的呈现。

需要明确的是,这是针对具有视觉风格已启用。此外,控件的所有部分均正确呈现,但禁用控件周围的边框与禁用控件不匹配组合框边框颜色。

我正在使用VisualStyleRenderer类。 MSDN建议使用VisualStyleElement.TextBox的元素文本框的一部分组合框控制但标准禁用文本框和一个标准的残疾人组合框绘制略有不同(一个具有浅灰色边框,另一个具有浅蓝色边框)。

如何在禁用状态下正确呈现控件?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

我不确定100%是否是您要的内容,但您应该查看VisualStyleRenderer在System.Windows.Forms.VisualStyles-命名空间中。

  1. VisualStyleRenderer类(MSDN)
  2. 如何:呈现视觉样式元素(MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled(MSDN)

由于如果用户未启用视觉样式(他/她可能正在运行“经典模式”或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.
}

希望能帮助到你!

来源
Translate

是任何控制画有用的方法吗?这就是我通常用于自定义控件的内容。

来源