当我一个一个读取我的数据库值时,我做了一个 if 语句并尝试更改行颜色。
例如,如果 fark <= 10.000
,我的行颜色是红色;如果 fark < 0
我的行颜色是黑色。
我写了上面的代码,当我执行它时出现错误:
我的代码:
while (dr.Read())
{
ListViewItem lv = new ListViewItem(
dr[0].ToString());
lv.SubItems.Add(dr[1].ToString());
lv.SubItems.Add(dr[2].ToString());
lv.SubItems.Add(dr[3].ToString());
lv.SubItems.Add(dr[4].ToString());
listView1.Items.Add(lv);
fark = Convert.ToDouble(dr[3].ToString()) - Convert.ToDouble(dr[4].ToString());
if (fark <= 10.000)
{
MessageBox.Show("Near Maximum ");
listView1.Items[linemum].BackColor = Color.Red;
}
else if (fark <= 20.000 && fark >= 10.000)
{
MessageBox.Show("Maybe Near");
listView1.Items[linemum].BackColor = Color.Yellow;
}
else if (fark < 0)
{
MessageBox.Show("overflow");
listView1.Items[linemum].BackColor = Color.Black;
}
linemum = linemum + 1;
}
最佳答案
首先,这段代码永远不会被执行
else if (fark < 0)
{
//
}
因为如果
fark < 0
, fark <= 10.000
为真,则执行此 if
中的语句其次,您的异常
InvalidArgument=Value of '1' is not valid for 'index'
意味着您想要获取 Items
之外的项目。例如,如果您的 Items
中有 1 个元素并且您想要获取 Items[1],则会引发异常,但 Items[0] 必须有效。尝试在循环之前初始化您的
linemum = 0
while关于c# - 如何更改 ListView 中的行颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52185533/