Forums Neueste Beiträge
 

DEL-Taste im DGV kontrollieren

12/05/2008 - 09:12 von Hans Wagner | Report spam
Hallo,
wie kann ich in einem DGV die DEL-Taste kontrollieren.
Ich wollte eine Funktion schreiben die aufgerufen wird bevor die
Löschaktion eintritt.
Ich benutze das Ereignis "DGV_UserDeletedRow" dies tritt aber erst nach
dem Löschen ein d.h. Die Abfrage ob der DS wirklich gelöscht werden soll
machte keinen Sinn mehr da dieser bereits gelöscht ist!

Wer kann mir einen besseren Ablauf nennen??

Danke
Hans
 

Lesen sie die antworten

#1 Peter Götz
12/05/2008 - 11:52 | Warnen spam
Hallo Hans,

wie kann ich in einem DGV die DEL-Taste kontrollieren.
Ich wollte eine Funktion schreiben die aufgerufen wird
bevor die Löschaktion eintritt.
Ich benutze das Ereignis "DGV_UserDeletedRow" dies
tritt aber erst nach dem Löschen ein d.h. Die Abfrage ob
der DS wirklich gelöscht werden soll machte keinen Sinn
mehr da dieser bereits gelöscht ist!

Wer kann mir einen besseren Ablauf nennen??



DGV_UserDeletedRow() wird
nach dem Löschen der akt. DGV-Zeile aufgerufen.

DGV_UserDeletingRow() wird
vor dem Löschen der akt. Zeile aufgerufen
und dort kannst Du mit Hilfe von
e.Cancel = True
das Löschen auch noch verhindern.

Kleines Beispiel:

' /// Code in einer leeren Form1
Public Class Form1
Private WithEvents DGV As DataGridView
Private mDT As DataTable
Private mDV As DataView

Private Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load

DGV = New DataGridView
With DGV
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 20)

.Anchor = AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom

.DefaultCellStyle.Font = _
New Font("Arial", 10)

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)

End With
Me.Controls.Add(DGV)

CreateData()
DGV.DataSource = mDV
End Sub

Private Sub DGV_UserDeletingRow _
(ByVal sender As Object, _
ByVal e As DataGridViewRowCancelEventArgs _
) Handles DGV.UserDeletingRow

If MsgBox _
("Datensatz mit ID '" & _
e.Row.Cells("ID").Value.ToString & _
"' löschen?", _
MsgBoxStyle.Question Or MsgBoxStyle.YesNo _
) = MsgBoxResult.No Then

e.Cancel = True
End If
End Sub

Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow

mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("Monat", GetType(String))
For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i)
.Rows.Add(DR)
Next i
.AcceptChanges()
End With
mDV = New DataView(mDT)
End Sub
End Class
' \\\ E N T E

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen