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

C# 创建具有不同背景颜色的线条列表的最佳方法,c#,winforms,C#,Winforms,我希望在我的应用程序中有一个具有不同优先级的消息列表。我想通过改变背景颜色来明确这些级别 我已经使用ListViewItem实现了这一点,但问题是当View属性设置为Details时,必须有列。此外,我无法使用我放入ListView的窗口调整列的大小 ListViewItem lvi = lvMessages.Items.Add(message); switch (level) { case Level.Warning: lvi.BackColor = Color.Yellow;

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

我已经使用
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属性设置为:

  • 添加具有空文本属性的列
  • 将View属性设置为Details
  • 将HeaderStyle属性设置为“无”
  • 然后将其用作(仅作为示例):

    var list=newlist();
    var item1=new ITemInListView()
    {
    message=“这是item1”,
    级别=级别。警告
    };
    var item2=new ITemInListView()
    {
    message=“这是item2”,
    级别=级别。错误
    };
    var item3=new ITemInListView()
    {
    message=“这是item3”,
    级别=级别。错误
    };
    var item4=新的ITemInListView()
    {
    message=“这是item4”,
    级别=级别。警告
    };
    增加(第1项);
    增加(第2项);
    增加(第3项);
    增加(第4项);
    //将列的宽度设置为ListView控件的宽度,使其扩展为全尺寸。
    lvMessages.Columns[0]。宽度=lvMessages.Width;
    foreach(ITemInListView列表中的项目)
    {
    var lvi=lvMessages.Items.Add(item.message);
    开关(项目级)
    {
    案例级别。警告:
    lvi.BackColor=Color.Yellow;
    打破
    案例级别。错误:
    lvi.BackColor=Color.Red;
    打破
    }
    }
    
    请显示一些代码。添加了一些代码,效果很好,只是它的伸缩性不好。我需要添加一个
    ColumnHeader
    ,这是我不想要的。为什么不使用DataGridView呢?它很好用,我现在就有它,但它不是我想要的。然后你需要使用另一个控件或创建自己的用户控件to实现你想要的。使用listview,这是你能做的最好的事情。
        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;
            }
        }