Dot-Net

禁用數據網格視圖中的行選擇

  • February 14, 2014

我想禁用數據網格視圖中某些行的選擇。

必須可以刪除 winform 中顯示的 datagridview 中一個或多個 datagridview 行的 select 屬性。目標是使用者不能選擇某些行。(根據條件)

謝謝,

如果 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() 指向新類。

引用自:https://stackoverflow.com/questions/71423