创建具有不同背景颜色的线条列表的最佳方法

本文关键字:最佳 方法 列表 颜色 背景 创建 | 更新日期: 2023-09-27 18:16:09

我想在我的应用程序中具有不同优先级的消息列表。我想通过改变背景颜色来使这些关卡更清晰。

我已经使用ListViewItem实现了这一点,但那里的问题是,当View属性设置为Details时,必须有列。此外,我不能使列的大小与我把ListView在窗口。

ListViewItem lvi = lvMessages.Items.Add(message);
switch (level) {
  case Level.Warning:
    lvi.BackColor = Color.Yellow;
  break;
  case Level.Error:
    lvi.BackColor = Color.Red;
  break;
}

是否有其他的方法来制作一个漂亮的,可扩展的列表,如果行不同的背景颜色?

创建具有不同背景颜色的线条列表的最佳方法

试试这个:(记住,这将给你一个开始。有更好的方法来实现这个

    enum Level
    {
        Warning,
        Error
    }
    class ITemInListView
    {
        public string message { get; set; }
        public Level level { get; set; }
    }

设置你的ListView属性为:

  1. 添加一个Text属性为空的列。
  2. 设置View属性为Details
  3. 设置HeaderStyle属性为None

然后用它作为(只是一个例子):

    var list = new List<ITemInListView>();
    var item1 = new ITemInListView()
    {
        message = "This is item1",
        level = Level.Warning
    };
    var item2 = new ITemInListView()
    {
        message = "This is item2",
        level = Level.Error
    };
    var item3 = new ITemInListView()
    {
        message = "This is item3",
        level = Level.Error
    };
    var item4 = new ITemInListView()
    {
        message = "This is item4",
        level = Level.Warning
    };
    list.Add(item1);
    list.Add(item2);
    list.Add(item3);
    list.Add(item4);

    //Set the width of the column to be the width of the ListView control so it expands to full size.
    lvMessages.Columns[0].Width = lvMessages.Width;
    foreach (ITemInListView item in list)
    {
        var lvi = lvMessages.Items.Add(item.message);
        switch (item.level)
        {
            case Level.Warning:
                lvi.BackColor = Color.Yellow;
                break;
            case Level.Error:
                lvi.BackColor = Color.Red;
                break;
        }
    }