DataGridView: как сфокусировать целую строку вместо одной ячейки?
Я хотел бы использовать элемент управления DataGridView в виде списка с столбцами. Подобно ListView в режиме подробной информации, но я хочу сохранить гибкость DataGridView.
ListView (с подробным представлением и включенным FullRowSelect) выделяет всю строку и показывает метку фокуса по всей строке:
![selected row in ListView control]()
DataGridView (с SelectionMode = FullRowSelect) отображает метку фокусировки только вокруг одной ячейки:
![selected row in DataGridView]()
Итак, знает ли кто-нибудь (в идеале) простой способ сделать выбор строки DataGridView похожим на ListView?
Я не ищу измененного поведения элемента управления - я хочу, чтобы он выглядел одинаково.
В идеале, не испортив методы, которые делают фактическую картину.
Ответы
Ответ 1
Поместите этот код либо в конструктор формы, либо установите его в свойствах datagridview с помощью среды IDE.
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgv.MultiSelect = false;
dgv.RowPrePaint +=new DataGridViewRowPrePaintEventHandler(dgv_RowPrePaint);
Затем вставьте в код формы следующее событие:
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
e.PaintParts &= ~DataGridViewPaintParts.Focus;
}
И это работает!:-)
"dgv" - это рассматриваемый DataGridView, а "форма" - это форма, которая содержит его.
Обратите внимание, что эта душа не отображает пунктирный прямоугольник вокруг всей строки. Вместо этого он полностью удаляет фокусные точки.
Ответ 2
Как насчет
SelectionMode == FullRowSelect
и
ReadOnly == true
Это работает для меня.