当我一个一个读取我的数据库值时,我做了一个 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 < 0fark <= 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/

10-11 05:10