12

datagridview で特定の行の選択を無効にしたい。

winform に表示される datagridview の 1 つ以上の datagridview 行の select プロパティを削除できる必要があります。目標は、ユーザーが特定の行を選択できないようにすることです。(条件による)

ありがとう、

4

2 に答える 2

16

SelectionMode が FullRowSelect の場合、その DataGridView の SetSelectedRowCore をオーバーライドする必要があり、選択したくない行のベース SetSelectedRowCore を呼び出さないでください。

SelectionMode が FullRowSelect でない場合は、SetSelectedCellCore を追加でオーバーライドする必要があります (選択したくない行のベース SetSelectedCellCore を呼び出さないでください)。

次に例を示します。

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() を新しいクラスを指すようにします。

于 2008-09-16T12:22:12.360 に答える
-1
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
于 2013-03-18T10:16:25.580 に答える