none
请教在datagridview中怎样才能禁止单元格的值随着鼠标中键的滚动而变化

    问题

  • 下面的代码是选择了第一列的颜色后,自动在第2列列出可选择的型号,

    请教在datagridview中怎样才能禁止单元格的值随着鼠标中键的滚动而变化?

        Private Sub DGVSM_CellEndEdit(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGVSM.CellEndEdit
    
            If e.ColumnIndex = 2 Then
                Return
            End If
    
            arrSMGroupName = "绿色 哑光 FSR-8000;绿色 无卤 KSM-S6188EHG1;蓝色 KSM-S6189 BL01;红色 无卤 KSM-S6189 ER04;浅绿色 KSM-S6189 GL27;红色 KSM-S6189 R04".Split(";")
            arrSMName = "FSR-8000;KSM-S6188EHG1;KSM-S6189 BL01;KSM-S6189 ER04;KSM-S6189 GL27;KSM-S6189 R04".Split(";")
    
            With DGVSM
                Dim Row As Integer = .CurrentRow.Index
                If .Item(1, Row).Value <> "" Then
                    .Item(2, Row).Value = ""
                    Dim Color As String = .Item(1, Row).Value
                    Dim dtgCell As New DataGridViewComboBoxCell
    
                    For i As Integer = 0 To arrSMGroupName.GetUpperBound(0)
                        If arrSMGroupName(i).IndexOf(Color) > -1 Then
                            dtgCell.Items.Add(arrSMName(i))
                        End If
                    Next
                    .Item(2, Row) = dtgCell
                End If
            End With
        End Sub

    2016年12月9日 5:43

答案

  • Hi leon1526,

    根据我的了解,是可以实现的,可能过程会复杂一点。

    1 继承一个新的cell的类,集成DataGridViewTextBoxCell 。定义这个类是A.

    2 重写paint这个方法。

    3 重OnMouseEnter and OnMouseLeave 方法,为了重回新的空间。

    4 定义一个新类B,这个类是继承 DataGridViewColumn 类型

    具体你可以参考下面的这个链接,里面有实现的代码。希望能帮助到你。

    https://msdn.microsoft.com/zh-cn/library/7fb61s43(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

    如果你在开发中遇到什么问题,请随时联系我。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2016年12月9日 9:42
    版主

全部回复