Итак, очевидно, вы взломали мою рабочую станцию и видели некоторые вещи, над которыми я недавно работал. Я немного преувеличиваю, потому что я сделал не совсем то, что вы пытаетесь сделать, но с небольшим изменением я смог.
Я бы изменил ваше MouseClick
событие, чтобы получить DGV's CurrentCell
. Получив его, установите свойство CurrentCell
Style
с нужным значением SelectionBackColor
. Примерно так:
// ...
DataGridView.HitTestInfo hti = dataGridView2.HitTest(e.X, e.Y);
if (hti.Type == DataGridViewHitTestType.Cell) {
dataGridView2.CurrentCell = dataGridView2.Rows[hti.RowIndex].Cells[hti.ColumnIndex];
dataGridView2.CurrentCell.Style = new DataGridViewCellStyle { SelectionBackColor = System.Drawing.Color.Yellow};
}
//...
Вышесказанное немного напоминает «воздушный код-у» (другими словами, я не пытался объединить его с вашим кодом и запустить его), но я надеюсь, что вы поняли идею. Обратите внимание, что я проверяю тест попадания на ячейку; если вы этого не сделаете и пользователь не щелкнет ячейку, у вас могут возникнуть проблемы.
Теперь проблема в том, что этот код изменит SelectionBackColor
для всех ячеек, по которым вы щелкнете правой кнопкой мыши. Это свойство легко восстановить в событии DGV CellLeave
:
private void dgvBatches_CellLeave(object sender, DataGridViewCellEventArgs e) {
dataGridView2.CurrentCell.Style = new DataGridViewCellStyle { SelectionBackColor = System.Drawing.SystemColors.Highlight };
}
Мне придется запомнить этот визуальный эффект; спасибо за вопрос.