2017-01-13 1 views
0

Ich habe ein Raster und die erste Spalte ist eine Schaltfläche für jede Zeile, mit Excluir ("Löschen").Button Spalte in einem Datagrid

enter image description here

Wenn ich mich in der Schaltfläche klicken muß die Schaltfläche Aktion und welcher Zeile erholen geklickt wurde, ich versuche, dies aber nicht funktionieren.

Private Sub dgAdm_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) 

    IF e.ColumnIndex = dgAdm.Columns["Delete"].Index AndAlso e.RowIndex >= 0 

      Console.WriteLine("Button on row {0} clicked", e.RowIndex) 
    End 

Jemand weiß, was ich

+0

"aber nicht arbeiten" ist eine schreckliche Problembeschreibung. '&&' ??? meinst du "AndAlso"? – Plutonix

+0

Es heißt DataGridViewCellEventArgs ist nicht definiert. Und in der "delete" sagt es erwartet eine Kennung –

+1

Bitte posten Sie den vollständigen Code, das ist kein gültiger vb. Netzsyntax. – Jaxedin

Antwort

1

Sie benötigen bin fehlt zum Absender Parameter beziehen, weil es ein Object Typ Sie es zuerst werfen müssen Datagridview. Hier ist ein Beispiel in vb.net, wie die Zeilen- und Spaltennummer über CellClick Ereignis:

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick 
    Dim rowNum As Integer = CType(sender, DataGridView).CurrentCell.RowIndex ' get row number 
    Dim colNum As Integer = CType(sender, DataGridView).CurrentCell.ColumnIndex ' get col number 

    If colNum = 1 Then ' the index of the "delete" button column 
     MsgBox("the row number that was clicked: " & rowNum) 
    End If 

End Sub 
+1

In Fällen, in denen Sie sich über den tatsächlichen Typ der Variablen sicher sind, verwenden Sie 'DirectCast (sender, DataGridView)', es ist billiger und schneller. – Fabio

+0

danke! Ich werde das übernehmen. ist es äquivalent zu "(DatagridView) Sender" in C#? – jonathana