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属性设置为:
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;
}
}