【问题标题】:vb.net DevExperess winforms gridview mouse down eventvb.net DevExperess winforms gridview 鼠标按下事件
【发布时间】:2016-02-06 01:59:17
【问题描述】:

我对@9​​87654322@ 和GridViewMouseDown 事件有疑问。 如果用户按 control + shift + click 列标题是选择列,并且单击最左上角将选择所有行。我设法做到了,但任何一个都适用于我的代码。 if-else 语句的逻辑似乎有问题。任何人都可以帮忙吗?

Private Sub gridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles GridView1.MouseDown
    If Control.ModifierKeys = (Keys.Control) Then
        Dim view As GridView = CType(sender, GridView)
        Dim hInfo As GridHitInfo = view.CalcHitInfo(e.Location)
        If hInfo.InColumn Then
            view.ClearSelection()
            SelectCells(hInfo.Column)
        Else
            Return
        End If
        CType(e, DXMouseEventArgs).Handled = True
    ElseIf Control.ModifierKeys = Nothing Then
        Dim view As GridView = CType(sender, GridView)
        view.ClearSelection()
        Return
    Else
        Dim view2 As GridView = CType(sender, GridView)

        Dim hitInfo As GridHitInfo = view2.CalcHitInfo(e.Location)

        If hitInfo.HitTest = GridHitTest.ColumnButton Then
            view2.SelectAll()
        End If
        CType(e, DXMouseEventArgs).Handled = True

    End If

End Sub

Private Sub SelectCells(ByVal column As GridColumn)
    Dim view As GridView = CType(column.View, GridView)

    view.BeginSelection()
    For i As Integer = 0 To column.View.RowCount - 1
        view.SelectCell(i, column)
    Next i
    view.EndSelection()
End Sub

【问题讨论】:

  • 您的 SelectAll 正在使用 AltShift 修饰符。

标签: vb.net winforms gridview devexpress


【解决方案1】:

您可以使用Select Case 语句重新排列您的语句。
示例如下:

Private Sub gridView1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles gridView1.MouseDown

    Dim view As GridView = CType(sender, GridView)
    Dim hInfo As GridHitInfo = view.CalcHitInfo(e.Location)

    Select Case True
        Case hInfo.HitTest = GridHitTest.ColumnButton
            view.SelectAll()
        Case Control.ModifierKeys = Nothing
            view.ClearSelection()
            Return
        Case hInfo.InColumn AndAlso Control.ModifierKeys = (Keys.Shift Or Keys.Control)
            view.ClearSelection()
            SelectCells(hInfo.Column)
        Case Else
            Return
    End Select

    CType(e, DXMouseEventArgs).Handled = True

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多