Индекс был вне диапазона в событии RowStateChanged, сетка данных c # - PullRequest
0 голосов
/ 06 июля 2018

Это мой код в RowStateChangedEvent

private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
    {




                if (dataGridView1.Rows[e.Row.Index].Selected)
                {
                  //dosomething
                }




    }


И это событие form_load (где я заполняю сетку данных)

        DataTable dt = new DataTable();
        dt.Columns.Add("c1", typeof(string));
        dt.Columns.Add("c2", typeof(string));

        dt.Rows.Add("somedata", "somedata");
        dt.Rows.Add("somedata", "somedata");

        dataGridView1.ColumnHeadersVisible = false;
        dataGridView1.RowHeadersVisible = false;
        dataGridView1.DataSource = dt;


Я получаю эту ошибку
enter image description here
Индекс был вне диапазона .--- Он возвращает -1 индекс в случае, я не знаю почему.
Есть идеи?

1 Ответ

0 голосов
/ 06 июля 2018

Вы захотите проверить, если индекс> = 0. Некоторые события также запускаются для строки заголовка, которая имеет -1:

if (e.RowIndex >= 0 && dataGridView1.Rows[e.Row.Index].Selected)
{
    //dosomething
}
...