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