创建具有不同背景颜色的线条列表的最佳方法
本文关键字:最佳 方法 列表 颜色 背景 创建 | 更新日期: 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属性为:
- 添加一个Text属性为空的列。
- 设置View属性为Details
- 设置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;
}
}