当我逐一读取我的数据库值时,我做了一个if语句,然后尝试更改行颜色。
例如,如果fark <= 10.000
,我的行颜色是红色;如果fark < 0
我的行颜色是黑色。
我写了上面的代码,执行时给我错误:
InvalidArgument =值'1'对于'索引'无效。 参数名称:索引
我的代码:
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;
}
答案 0 :(得分:4)
首先,此代码永远不会执行
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