Поместить индикатор строки DataGridView для выбранной вручную строки - PullRequest
6 голосов
/ 25 июля 2011

У меня есть следующий код в сетке данных WinForms для обработки щелчков правой кнопкой мыши и выбора основной строки:

private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button != MouseButtons.Right) return;

        var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y);
        dataGridViewTestSteps.ClearSelection();
        dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true;
    }

... теперь это работает нормально, но не помещает маленький индикатор в правильный ряд (см. Изображение ниже). В общем, мне было интересно, чего не хватает в методе выше?

falsely placed row indicator

1 Ответ

5 голосов
/ 25 июля 2011

Курсор заголовка строки показывает текущую строку, а не выбранную строку - они на самом деле отличаются, так как вы можете иметь несколько выбранных строк, но только одну текущую строку.

Попробуйте вместо этого код:

private void dataGridViewTestSteps_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button != MouseButtons.Right) return;

    var hitTestInfo = dataGridViewTestSteps.HitTest(e.X, e.Y);
    //dataGridViewTestSteps.ClearSelection();
    //dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Selected = true;
    dataGridViewTestSteps.CurrentCell = dataGridViewTestSteps.Rows[hitTestInfo.RowIndex].Cells[0];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...