0

我想在我的应用程序中有一个具有不同优先级的消息列表。我想通过改变背景颜色来明确这些级别。

我已经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;
}

如果线条具有不同的背景颜色,是否还有其他方法可以制作出漂亮、可扩展的列表?

4

1 回答 1

0

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

    enum Level
    {
        Warning,
        Error
    }

    class ITemInListView
    {
        public string message { get; set; }
        public Level level { get; set; }
    }

将您的 ListView 属性设置为:

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

然后将其用作(仅作为示例):

    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;
        }
    }
于 2013-05-31T10:58:17.130 回答