C# ListView 控件枚举显示系统颜色效果代码示例
本文介绍了在 Windows Forms 开发中,如何通过 C# 代码自动枚举 .NET 框架提供的标准颜色体系(KnownColor),并将它们可视化展示在 ListView 列表中。该功能主要用于辅助界面设计时的配色选择。
C# ListView 颜色枚举核心逻辑
在开发 Windows 桌面应用程序时,有时需要参考系统预设的色彩搭配。C# 提供了 System.Drawing.Color.FromName(string) 静态方法,可以通过颜色名称字符串动态创建 Color 对象。结合枚举接口,我们可以获取所有可用的已知颜色名称。
以下代码展示了如何在一个窗体或用户控件中实现这一功能。它将执行以下操作:
- 检查是否存在名为
listView_Color的列表视图控件,若存在则复用,否则新建。 - 配置列宽以容纳内容。
- 遍历所有已知的绘图颜色名称。
- 为每种颜色生成三行数据:纯文本色、背景填充色、以及深色背景下的白色文字。
首先,将代码所需的命名空间引入到类文件中:
using System; using System.Windows.Forms; using System.Drawing;
核心方法的实现逻辑如下:
private void displayColor()
{
// 1. 尝试查找或创建 ListView 容器
Control listControl = this.Controls["listView_Color"];
if (listControl != null)
{
listControl.Visible = true;
return;
}
ListView listView_Color = new ListView();
// 2. 初始化6个列头,用于对齐排列
ColumnHeader columnHeaderA = new ColumnHeader();
ColumnHeader columnHeaderB = new ColumnHeader();
ColumnHeader columnHeaderC = new ColumnHeader();
ColumnHeader columnHeaderD = new ColumnHeader();
ColumnHeader columnHeaderE = new ColumnHeader();
ColumnHeader columnHeaderF = new ColumnHeader();
columnHeaderA.Width = 200;
listView_Color.Columns.AddRange(new ColumnHeader[] {
columnHeaderA,
columnHeaderB,
columnHeaderC,
columnHeaderD,
columnHeaderE,
columnHeaderF
});
// 准备重复使用的字符串数组
string[] strArr = new string[6];
// 3. 枚举系统已知的所有颜色名称
Array colorsArray = Enum.GetValues(typeof(KnownColor));
for (int i = 0; i < colorsArray.Length; i++)
{
string colorName = colorsArray.GetValue(i).ToString();
// 可根据关键词过滤特定色系,如仅保留绿色:
// if (!colorName.Contains("Green")) continue;
Color color = Color.FromName(colorName);
// 4. 填充数据行,演示不同场景的颜色效果
for (int j = 0; j < 6; j++)
strArr[j] = colorName;
// 场景A:字体本身使用该颜色
ListViewItem li = new ListViewItem(strArr);
li.ForeColor = color;
listView_Color.Items.Add(li);
// 场景B:列表项背景使用该颜色
li = new ListViewItem(strArr);
li.BackColor = color;
listView_Color.Items.Add(li);
// 场景C:深色背景配合白色文字(若底色较亮)
li = new ListViewItem(strArr);
li.BackColor = color;
li.ForeColor = Color.White;
listView_Color.Items.Add(li);
}
// 5. 完成界面布局设置
this.Controls.Add(listView_Color);
listView_Color.BringToFront();
listView_Color.Dock = DockStyle.Fill;
listView_Color.View = View.Details;
// 自动计算最后一列的宽度填满剩余空间
columnHeaderF.Width = listView_Color.DisplayRectangle.Width
- columnHeaderA.Width
- columnHeaderB.Width
- columnHeaderC.Width
- columnHeaderD.Width
- columnHeaderE.Width;
listView_Color.Name = "listView_Color";
}
// 关闭/隐藏该颜色列表的方法
private void hideColor()
{
Control listControl = this.Controls["listView_Color"];
if(listControl!=null)
listControl.Visible = false;
}
关键参数与细节说明
System.Drawing.KnownColor:这是Color结构体支持的枚举类型,包含了 Windows 操作系统及 GDI+ 环境支持的标准颜色集合。遍历此枚举比手动编写颜色字典要高效且准确。ListviewItem.ListViewSubItem:本例通过将颜色名称复制填充到多个子项(strArr),模拟了具有多列的表格效果。在实际使用中,您可以根据需要在不同的列中展示 RGB 值、HEX 值等详细信息。ColumnHeaderF自适应宽度:为了保证ListView控件始终填满整个父容器,最后一列被设置为“拉伸”模式,其宽度由总可用宽度减去前几列固定的宽度得出。
通过上述方法运行后,您将看到一个完整的颜色预览面板。这对于调试 GUI 界面的主题色或进行色彩心理学相关的实验非常有用。以上就是 C# 枚举 Color 并展示各种颜色效果的详细内容,更多关于 C# 界面设计与 ListView 使用的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













