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

时间:2008-09-16 11:36:09

标签: .net winforms datagridview user-interface

我想禁用数据网格视图中某些行的选择。

必须可以删除winform中显示的datagridview中的一个或多个datagridview行的select属性。目标是用户无法选择某些行。 (取决于条件)

Thankx,

2 个答案:

答案 0 :(得分: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
     }
}

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

答案 1 :(得分:-1)

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