jj: add try-catch in drag drop

This commit is contained in:
Jonathan Jenne 2018-06-12 11:47:35 +02:00
parent 72c71ae651
commit cf5c295801
2 changed files with 43 additions and 42 deletions

View File

@ -30,41 +30,44 @@ Public Class ClassDragDrop
End Sub
Private Sub view_MouseMove(sender As Object, e As MouseEventArgs)
Dim view As GridView = sender
Dim hitInfo As GridHitInfo = view.CalcHitInfo(New Point(e.X, e.Y))
Try
Dim view As GridView = sender
Dim hitInfo As GridHitInfo = view.CalcHitInfo(New Point(e.X, e.Y))
If e.Button = MouseButtons.Left And Not IsNothing(downHitInfo) Then
Dim dragSize As Size = SystemInformation.DragSize
Dim dragRect As New Rectangle(New Point(downHitInfo.HitPoint.X - dragSize.Width / 2, downHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize)
If e.Button = MouseButtons.Left And Not IsNothing(downHitInfo) Then
Dim dragSize As Size = SystemInformation.DragSize
Dim dragRect As New Rectangle(New Point(downHitInfo.HitPoint.X - dragSize.Width / 2, downHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize)
' DragRect ist ein kleines Rechteck, dessen Mitte der Punkt ist, wo die Maus geklickt wurde.
' Es soll verhindern, dass durch schnelles Klicken unbeabsichtigt Drag'n'Drop Operationen initiiert werden
' Siehe: https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.dragsize(v=vs.110).aspx
If Not dragRect.Contains(New Point(e.X, e.Y)) Then
' dragDropData enhält eine einzelne Row oder den kompletten View,
' jenachdem, wie die Drag'n'Drop Operation gestartet wurde.
Dim dragDropData As String
' DragRect ist ein kleines Rechteck, dessen Mitte der Punkt ist, wo die Maus geklickt wurde.
' Es soll verhindern, dass durch schnelles Klicken unbeabsichtigt Drag'n'Drop Operationen initiiert werden
' Siehe: https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.dragsize(v=vs.110).aspx
If Not dragRect.Contains(New Point(e.X, e.Y)) Then
' dragDropData enhält eine einzelne Row oder den kompletten View,
' jenachdem, wie die Drag'n'Drop Operation gestartet wurde.
Dim dragDropData As String
' Wenn keine Zeile markiert ist
If downHitInfo.RowHandle < 0 Then
Exit Sub
' Wenn keine Zeile markiert ist
If downHitInfo.RowHandle < 0 Then
Exit Sub
End If
' Wenn zwar eine Zeile markiert ist, aber keine über die Checkbox angehakt wurde,
' wird die markierte Zeile übergeben.
' Wenn 1 oder n Zeilen über die Checkbox angehakt wurde, werden diese übergeben
Dim row As DataRow = view.GetDataRow(downHitInfo.RowHandle)
Dim source As String = view.GridControl.Name
dragDropData = row.Item("GUID") & "|" & source
view.GridControl.DoDragDrop(dragDropData, DragDropEffects.Move)
downHitInfo = Nothing
DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = True
End If
' Wenn zwar eine Zeile markiert ist, aber keine über die Checkbox angehakt wurde,
' wird die markierte Zeile übergeben.
' Wenn 1 oder n Zeilen über die Checkbox angehakt wurde, werden diese übergeben
Dim row As DataRow = view.GetDataRow(downHitInfo.RowHandle)
Dim source As String = view.GridControl.Name
dragDropData = row.Item("GUID") & "|" & source
view.GridControl.DoDragDrop(dragDropData, DragDropEffects.Move)
downHitInfo = Nothing
DevExpress.Utils.DXMouseEventArgs.GetMouseArgs(e).Handled = True
End If
End If
Catch ex As Exception
MsgBox("Error in view_MouseMove: " & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub grid_DragOver(sender As Object, e As DragEventArgs)

View File

@ -124,8 +124,6 @@ Public Class frmSQL_DESIGNER
Dim pattern As New clsPatterns.Pattern(placeholder)
query = clsPatterns.ReplacePattern(query, pattern.Type, replacement)
'query = query.Replace(placeholder, replacement)
Else
MsgBox("Bitte geben Sie für den Platzhalter " & placeholder & " einen Wert an!", MsgBoxStyle.Exclamation, "Fehlende Platzhalter Ersetzung")
Exit Sub
@ -229,21 +227,28 @@ Public Class frmSQL_DESIGNER
Private Sub btnAddControl_Click(sender As Object, e As EventArgs) Handles btnAddControl.Click
If cmbControls.SelectedIndex <> -1 Then
Dim value As String = clsPatterns.WrapPatternValue("CTRL", cmbControls.Text)
Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_CTRL, cmbControls.Text)
InsertAtSelection(value)
End If
End Sub
Private Sub btnAddStatic_Click(sender As Object, e As EventArgs) Handles btnAddStatic.Click
If cmbStatic.SelectedIndex <> -1 Then
Dim value As String = clsPatterns.WrapPatternValue("INT", cmbStatic.Text)
Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_INT, cmbStatic.Text)
InsertAtSelection(value)
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAddIndex.Click
If cmbIndexe.SelectedIndex <> -1 Then
Dim value As String = clsPatterns.WrapPatternValue("WMI", cmbIndexe.Text)
Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_WMI, cmbIndexe.Text)
InsertAtSelection(value)
End If
End Sub
Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
If cmbUser.SelectedIndex <> -1 Then
Dim value As String = clsPatterns.WrapPatternValue(clsPatterns.PATTERN_USER, cmbUser.Text)
InsertAtSelection(value)
End If
End Sub
@ -257,11 +262,4 @@ Public Class frmSQL_DESIGNER
Private Sub btnShowConnections_Click(sender As Object, e As EventArgs) Handles btnShowConnections.Click
frmConnection.ShowDialog()
End Sub
Private Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
If cmbUser.SelectedIndex <> -1 Then
Dim value As String = clsPatterns.WrapPatternValue("USER", cmbUser.Text)
InsertAtSelection(value)
End If
End Sub
End Class