我希望在我的应用程序中有一个具有不同优先级的消息列表。我希望通过改变背景颜色来明确这些级别。
我已经使用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;
}
如果具有不同背景颜色的线条,还有其他方法可以制作漂亮的可扩展列表吗?
答案 0 :(得分:0)
试试这个:(请记住,这会给你一个启动。有更好的方法来实现它。
enum Level
{
Warning,
Error
}
class ITemInListView
{
public string message { get; set; }
public Level level { get; set; }
}
将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;
}
}