Benutzer mit den meisten Antworten
Wie funktioniert der DataGridViewButton?

Frage
-
Ich habe folgenden Plan. Ich möchte, wenn ich z.B. in Zeile 6 den Button klicke, dass dann die ganze Zeile gelöscht wird. Das Problem ist, dass ich nicht weiß, wie ich eine Formel den Buttons zuordnen kann.
Wenn ich in meinem bereich Column6 -> disposed (das ist das einzige, was da steht) wähle, dann passiert beim klicken auf die Butons einfach nichts.
Bitte helft mir.
PS.: Ich habe VisualBasic 2008 Express
- Bearbeitet MaSch0212 Montag, 26. Juli 2010 10:38 Version vergessen
Antworten
-
Hallo,
Ich habe folgenden Plan. Ich möchte, wenn ich z.B. in Zeile 6 den Button
klicke, dass dann die ganze Zeile gelöscht wird. Das Problem ist, dass
ich nicht weiß, wie ich eine Formel den Buttons zuordnen kann.Eine "Formel" musst Du den Buttons nicht zuweisen,
aber etwas Code in die DataGridView_CellContentClick-
Ereignisprozedur musst Du schreiben.Kopiere das nachfolgende Beispiel in ein leeres Formmodul (Form1.vb)
Public Class Form1
Private WithEvents DGV As DataGridView
Private mDT As DataTable
Private mDV As DataViewPrivate Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load' DataGridView erstellen
Dim i As Integer
DGV = New DataGridView
With DGV
.Name = "DGV"
.DefaultCellStyle.Font = New Font("Arial", 16).ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold).Dock = DockStyle.Fill
.DefaultCellStyle.Padding = _
New Padding(6, 4, 6, 4).AutoGenerateColumns = False
.Columns.Clear()
i = .Columns.Add("ID", "ID")
.Columns(i).DataPropertyName = "ID"i = .Columns.Add("Text", "Text")
.Columns(i).DataPropertyName = "Text"Dim BC As New DataGridViewButtonColumn
i = .Columns.Add(BC)
End With
Me.Controls.Add(DGV)' DataTable mit DataView erstellen
CreateData()' DataGridView an DataView (mDV) binden.
With DGV
.DataSource = mDV.AutoResizeRows()
.AutoResizeColumns()
.Columns(2).Width = 90
End With
End SubPrivate Sub CreateData()
Dim i As Integer
Dim DR As DataRow
mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("Text", GetType(String))For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, False)
.Rows.Add(DR)
Next
.AcceptChanges()
End WithmDV = New DataView(mDT)
End SubPrivate Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs _
) Handles DGV.CellContentClickmDV.Item(DGV.CurrentRow.Index).Delete()
End Sub
End ClassNach dem Programmstart, siehst Du eine Form1 mit einem DataGridView
mit dem Spalten "ID", "Text" und einer ButtonColumn.Bei einem Mausklick auf einen der Buttons in der ButtonColumn wird die
jeweilige Zeile gelöscht.Ein weiteres Beispiel für DataGridView_ButtonColumn findest Du unter
www.gssg.de -> Visual Basic -> VB.net
-> DataGridView
-> DataGridView ButtonColumnGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Thorsten DörflerModerator Samstag, 31. Juli 2010 16:05
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 10. August 2010 09:26
-
Hallo nochmal,
beim Absenden meiner vorigen Nachricht war ich ein
wenig zu schnell und habe erst danach bemerkt, dass
der Code in der Prozedur DGV_CellContentClick()
unvollständig ist.Den Code für DGV_CellContentClick() aus meinem vorigen
Posting musst Du wie folgt ändern, damit nur beim Click auf den
Button und nicht auch bei einem Klick auf die anderen
Columns die jeweilige Zeile gelöscht wird:Private Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs _
) Handles DGV.CellContentClickDim Col As Integer = DGV.CurrentCellAddress.X
If Col = 2 Then
mDV.Item(DGV.CurrentRow.Index).Delete()
End If
End SubGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 10. August 2010 09:27
Alle Antworten
-
Hallo,
Ich habe folgenden Plan. Ich möchte, wenn ich z.B. in Zeile 6 den Button
klicke, dass dann die ganze Zeile gelöscht wird. Das Problem ist, dass
ich nicht weiß, wie ich eine Formel den Buttons zuordnen kann.Eine "Formel" musst Du den Buttons nicht zuweisen,
aber etwas Code in die DataGridView_CellContentClick-
Ereignisprozedur musst Du schreiben.Kopiere das nachfolgende Beispiel in ein leeres Formmodul (Form1.vb)
Public Class Form1
Private WithEvents DGV As DataGridView
Private mDT As DataTable
Private mDV As DataViewPrivate Sub Form1_Load _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs _
) Handles MyBase.Load' DataGridView erstellen
Dim i As Integer
DGV = New DataGridView
With DGV
.Name = "DGV"
.DefaultCellStyle.Font = New Font("Arial", 16).ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold).Dock = DockStyle.Fill
.DefaultCellStyle.Padding = _
New Padding(6, 4, 6, 4).AutoGenerateColumns = False
.Columns.Clear()
i = .Columns.Add("ID", "ID")
.Columns(i).DataPropertyName = "ID"i = .Columns.Add("Text", "Text")
.Columns(i).DataPropertyName = "Text"Dim BC As New DataGridViewButtonColumn
i = .Columns.Add(BC)
End With
Me.Controls.Add(DGV)' DataTable mit DataView erstellen
CreateData()' DataGridView an DataView (mDV) binden.
With DGV
.DataSource = mDV.AutoResizeRows()
.AutoResizeColumns()
.Columns(2).Width = 90
End With
End SubPrivate Sub CreateData()
Dim i As Integer
Dim DR As DataRow
mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns.Add("Text", GetType(String))For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i, False)
.Rows.Add(DR)
Next
.AcceptChanges()
End WithmDV = New DataView(mDT)
End SubPrivate Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs _
) Handles DGV.CellContentClickmDV.Item(DGV.CurrentRow.Index).Delete()
End Sub
End ClassNach dem Programmstart, siehst Du eine Form1 mit einem DataGridView
mit dem Spalten "ID", "Text" und einer ButtonColumn.Bei einem Mausklick auf einen der Buttons in der ButtonColumn wird die
jeweilige Zeile gelöscht.Ein weiteres Beispiel für DataGridView_ButtonColumn findest Du unter
www.gssg.de -> Visual Basic -> VB.net
-> DataGridView
-> DataGridView ButtonColumnGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Thorsten DörflerModerator Samstag, 31. Juli 2010 16:05
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 10. August 2010 09:26
-
Hallo nochmal,
beim Absenden meiner vorigen Nachricht war ich ein
wenig zu schnell und habe erst danach bemerkt, dass
der Code in der Prozedur DGV_CellContentClick()
unvollständig ist.Den Code für DGV_CellContentClick() aus meinem vorigen
Posting musst Du wie folgt ändern, damit nur beim Click auf den
Button und nicht auch bei einem Klick auf die anderen
Columns die jeweilige Zeile gelöscht wird:Private Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellEventArgs _
) Handles DGV.CellContentClickDim Col As Integer = DGV.CurrentCellAddress.X
If Col = 2 Then
mDV.Item(DGV.CurrentRow.Index).Delete()
End If
End SubGruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 10. August 2010 09:27
-
Hallo Peter,
Du kannst Deine Beiträge auch nach dem Absenden über das Webfrontend nachträglich bearbeiten. Vielleicht fügst Du Deine Korrektur noch in den ersten Beitrag ein, damit das Beispiel vollständig ist.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de