C# ListView 控件枚举显示系统颜色效果代码示例

陈默
陈默
发布时间:2026-10-16| 8人浏览过
原创

本文介绍了在 Windows Forms 开发中,如何通过 C# 代码自动枚举 .NET 框架提供的标准颜色体系(KnownColor),并将它们可视化展示在 ListView 列表中。该功能主要用于辅助界面设计时的配色选择。

C# ListView 颜色枚举核心逻辑

在开发 Windows 桌面应用程序时,有时需要参考系统预设的色彩搭配。C# 提供了 System.Drawing.Color.FromName(string) 静态方法,可以通过颜色名称字符串动态创建 Color 对象。结合枚举接口,我们可以获取所有可用的已知颜色名称。

以下代码展示了如何在一个窗体或用户控件中实现这一功能。它将执行以下操作:

  1. 检查是否存在名为 listView_Color 的列表视图控件,若存在则复用,否则新建。
  2. 配置列宽以容纳内容。
  3. 遍历所有已知的绘图颜色名称。
  4. 为每种颜色生成三行数据:纯文本色、背景填充色、以及深色背景下的白色文字。

首先,将代码所需的命名空间引入到类文件中:

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 使用的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。