禁用数据网格视图中的行选择

Nik*_*iki 12 .net user-interface datagridview winforms

我想禁用datagridview中某些行的选择.

必须可以删除winform中显示的datagridview中的一个或多个datagridview行的select属性.目标是用户无法选择某些行.(视情况而定)

Thankx,

sze*_*vvy 16

如果SelectionMode是FullRowSelect,那么您将需要覆盖该DataGridView的SetSelectedRowCore,而不是为您不想选择的行调用基本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
     }
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用WinForms,请打开您的designer.cs以获取相关表单,并更改DataGridView实例的声明以使用此新类而不是DataGridView,并替换this.blahblahblah = new System.Windows.Forms. DataGridView()指向新类.