Как изменить цвет строки в ListView - PullRequest
0 голосов
/ 05 сентября 2018

Когда я читаю значения моей базы данных одно за другим, я делал оператор 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;
}

1 Ответ

0 голосов
/ 05 сентября 2018

Во-первых, этот код никогда не выполняется

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 перед циклом, пока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...