Отключить выбор строк в сетке данных - PullRequest
12 голосов
/ 16 сентября 2008

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

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

Thankx

Ответы [ 2 ]

16 голосов
/ 16 сентября 2008

Если для 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 () указывает на новый класс.

0 голосов
/ 18 марта 2013
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...