Вопрос

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

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

Спасибо,

Это было полезно?

Решение

Если 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 = new System.Windows.Forms. DataGridView(), чтобы указать на новый класс.

Другие советы

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top