Hallo
Um das Brett ein wenig am Leben zu erhalten, poste ich künftig ab und zu Probleme/Lösungen mit denen ich mich beschäftigt habe:
Folgendes Problem: DataGrid. Row ist markiert und ich drücke auf „Del“ --> Datensatz wird gelöscht. Jedoch möchte ich eine MessageBox anzeigen um das ganze bestätigen zu lassen.
Dies geht nicht weil kein BeforeDelete Event oder ähnliches vorhanden ist:
Folgende Lösung:
Public Class MyGrid
Inherits System.Windows.Forms.DataGrid
Private Const WM\_KEYDOWN As Integer = &H100
Public Event BeforeDeleteRow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
Public Overrides Function PreProcessMessage(ByRef msg As System.Windows.Forms.Message) As Boolean
Dim keyCode As Keys = CType((msg.WParam.ToInt32 And Keys.KeyCode), Keys)
If msg.Msg = WM\_KEYDOWN And keyCode = Keys.Delete Then
Dim e As New System.ComponentModel.CancelEventArgs(False)
OnBeforeDeleteRow(e)
If e.Cancel Then
Return True
End If
End If
Return MyBase.PreProcessMessage(msg)
End Function
Protected Sub OnBeforeDeleteRow(ByVal e As System.ComponentModel.CancelEventArgs)
RaiseEvent BeforeDeleteRow(Me, e)
End Sub
End Class
Gruss
Giuseppe
[MOD]: Danke, Giuseppe. Ich habe mir erlaubt, den Code ein bißchen zu formatieren. Gruß, J.