0

如果我们创建一个新的 WinForms .NET 项目并在其上放置一个 ListBox 或 ListView 控件,默认情况下它们会使用 OS 视觉样式呈现:

在此处输入图像描述

我需要绘制一个 1 像素的边框,类似于系统在我的自定义控件中为 ListBox/ListView 提供的边框。有没有办法使用系统调用来检索 ListBox/ListView 的系统边框的颜色?

4

1 回答 1

0

C#/WinForms 的快速回答:

var rend = new VisualStyleRenderer("ListBox", 0, 0);
Color borderColor = rend.GetColor(ColorProperty.BorderColor);

您还可以使用属性标识符为 3801 的 [GetThemeColor}(https://docs.microsoft.com/en-us/windows/win32/api/uxtheme/nf-uxtheme-getthemecolor) 函数通过 Windows API 检索相同的值:

在此处输入图像描述

但是,在一般情况下,边框可能包含不同的颜色值和/或与父背景混合,因此检索到的颜色值可能与您期望的不完全一样。

于 2021-10-05T15:52:53.720 回答