C# 如何使datagridview一次只能选择同一列中的单元格?

C# 如何使datagridview一次只能选择同一列中的单元格?,c#,winforms,inheritance,datagridview,C#,Winforms,Inheritance,Datagridview,我正在使用winforms开发我的应用程序。 我将datagridview控件的selectionmode设置为“CellSelect”,这允许用户选择任意多个单元格,这些单元格分布在多个列上;但我想约束我的用户一次只能选择单列中的单元格,而我没有这种选择模式 因此,如果我想实现这一点,如何扩展datagridview类? 我还认为,每当选择单元格被更改时,我都可以签入eventhandler,通过它,我可能会让用户无法选择分布在多个列上的单元格,但我认为这不是很好 其他人能帮我找到更好的解决方

我正在使用winforms开发我的应用程序。 我将datagridview控件的selectionmode设置为“CellSelect”,这允许用户选择任意多个单元格,这些单元格分布在多个列上;但我想约束我的用户一次只能选择单列中的单元格,而我没有这种选择模式

因此,如果我想实现这一点,如何扩展datagridview类? 我还认为,每当选择单元格被更改时,我都可以签入eventhandler,通过它,我可能会让用户无法选择分布在多个列上的单元格,但我认为这不是很好


其他人能帮我找到更好的解决方案吗?

您的实施还可以。这正是我所做的。起初,我试图处理选定的…核心方法,但细节变得笨拙。我选择了以下几点,因为1)它只需要很少的代码,2)不干扰其他代码,3)简单


非常感谢,但我恐怕演出不会那么精彩good@MemoryLeak当前位置你认为会有一场演出热播,怎么说?
Public Class DataGridView
    Inherits System.Windows.Forms.DataGridView

    Protected Overrides Sub OnSelectionChanged(ByVal e As System.EventArgs)
        Static fIsEventDisabled As Boolean

        If fIsEventDisabled = False Then

            If Me.SelectedCells.Count > 1 Then
                Dim iColumnIndex As Integer = Me.SelectedCells(0).ColumnIndex
                fIsEventDisabled = True
                ClearSelection()
                SelectColumn(iColumnIndex) 'not calling SetSelectedColumnCore on purpose
                fIsEventDisabled = False
            End If

        End If

        MyBase.OnSelectionChanged(e)

    End Sub

    Public Sub SelectColumn(ByVal index As Integer)
        For Each oRow As DataGridViewRow In Me.Rows
            If oRow.IsNewRow = False Then
                oRow.Cells.Item(index).Selected = True
            End If
        Next
    End Sub

End Class