Подтвердить что ты не робот

Отключить выбор строк в datagridview

Я хочу отключить выделение определенных строк в datagridview.

Должно быть возможно удалить свойство select для одной или нескольких строк datagridview в представлении datagridview, показанном в winform. Цель состоит в том, что пользователь не может выбирать определенные строки. (в зависимости от условия)

Thankx,

4b9b3361

Ответ 1

Если SelectionMode - FullRowSelect, вам необходимо переопределить SetSelectedRowCore для этого DataGridView и не вызывать базовый SetSelectedRowCore для строк, которые вам не нужны.

Если SelectionMode не является FullRowSelect, вам необходимо дополнительно переопределить SetSelectedCellCore (и не вызывать базовый SetSelectedCellCore для строк, которые вы не хотите выбрали), поскольку SetSelectedRowCore будет выполняться только в том случае, если вы нажмете заголовок строки, а не отдельный клетка.

Вот пример:

public class MyDataGridView : DataGridView
{
    protected override void SetSelectedRowCore(int rowIndex, bool selected)
    {
        if (selected && WantRowSelection(rowIndex))
        {
            base.SetSelectedRowCore(rowIndex, selected);
        }
     }

     protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
     {
         if (selected && WantRowSelection(rowIndex))
         {
            base.SetSelectedRowCore(rowIndex, selected);
          }
     }

     bool WantRowSelection(int rowIndex)
     {
        //return true if you want the row to be selectable, false otherwise
     }
}

Если вы используете WinForms, взломайте файл designer.cs для соответствующей формы и измените объявление экземпляра DataGridView на использование этого нового класса вместо DataGridView, а также замените this.blahblahblah = новые System.Windows.Forms.DataGridView(), чтобы указать на новый класс.

Ответ 2

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub