Hej! Om du sätter UseItemStyleForSubItems = false så kan du individuellt konfigurera cellerna.Ändra färg på ruta i en listview
Jag har en listview som jag fyller från ett dataset. Min fråga är om man kan sätta en bakgrunsfärg på en unik ruta. och kopplat till vilken statusvärde som skall fyllas i rutan
ex Status:
1 = röd
2 = gul
3 = grön
<code>
DataSet ds = CUsers.Load_All_Users();
listView2.Items.Clear();
foreach (DataRow rows in ds.Tables[0].Rows)
{
ListViewItem item1 = new ListViewItem(rows["ID"].ToString(), 0);//Betalid
item1.SubItems.Add(rows["tnr"].ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["inouttype"].ToString().ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["xfrom"].ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["textmsg"].ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["xstatus"].ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["xto"].ToString().Trim()); //Betlnings notering
item1.SubItems.Add(rows["xto"].ToString().Trim()); //Betlnings notering
listView2.Items.Add(item1);
}
</code>Sv: Ändra färg på ruta i en listview
listView2.OwnerDraw = true;
private void listView2_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}
private void listView2_DrawItem(object sender, DrawListViewItemEventArgs e)
{
e.DrawBackground();
e.DrawText();
}
private void listView2_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
if (e.SubItem.Text == "1")
e.SubItem.BackColor = Color.Red;
else if (e.SubItem.Text == "2")
e.SubItem.BackColor = Color.Yellow;
else if (e.SubItem.Text == "3")
e.SubItem.BackColor = Color.Green;
e.DrawBackground();
e.DrawText();
}
/André
Sv: Ändra färg på ruta i en listview
Jag har i följande exempel valt att bryta upp koden i tre funktioner för att öka läsbarheten.
Varje funktion har ett syfte:
private void Form1_Load(object sender, EventArgs e)
{
DataSet ds = CUsers.Load_All_Users();
listView2.SuspendLayout();
listView2.Items.Clear();
foreach (DataRow row in ds.Tables[0].Rows)
{
listView2.Items.Add(ListViewItem(row));
}
listView2.ResumeLayout();
}
private ListViewItem ListViewItem(DataRow row)
{
ListViewItem item1 = new ListViewItem(row["ID"].ToString(), 0); //Betalid
item1.SubItems.AddRange(new string[]
{
row["tnr"].ToString().Trim(), //Betlnings notering
row["inouttype"].ToString().Trim(), //Betlnings notering
row["xfrom"].ToString().Trim(), //Betlnings notering
row["textmsg"].ToString().Trim(), //Betlnings notering
row["xstatus"].ToString().Trim(), //Betlnings notering
row["xto"].ToString().Trim(), //Betlnings notering
row["xto"].ToString().Trim() //Betlnings notering
});
item1.UseItemStyleForSubItems = false;
item1.SubItems[4].BackColor = StatusColor(row.Field<int>("xstatus"));
return item1;
}
private Color StatusColor(int Status)
{
switch (Status)
{
case 1:
return Color.Red;
case 2:
return Color.Yellow;
case 3:
return Color.LightGreen;
default:
return Color.White;
}
}