Forums Neueste Beiträge
 

DataGridView CellContentDoubleClick und verschobene Spalten

08/10/2008 - 19:33 von Georg Weisse | Report spam
Hi zusammen,

mit:
dgAuswahl.Columns(0).DisplayIndex = dgAuswahl.Columns.Count - 1

verschiebe ich die erste Spalte meiner Access-Tabelle in einem DataGridView
ans Ende.
Das funktioniert an sich auch wunderbar...

Eben experimentierte ich mit DataGrid_CellContentDoubleClick...
Auch das klappt an sich, aber wenn ich auf die erste Spalte doppelt klicke,
wird das Event nicht ausgelöst.

Das tut mir im Augenblick nicht sonderlich weh, aber so recht verstehen
kann ich es nicht

[VB 2008 / Framework 2.0 (wegen W2K)]

Ciao,
georg
 

Lesen sie die antworten

#1 Peter Götz
09/10/2008 - 08:59 | Warnen spam
Hallo Georg,

mit:
dgAuswahl.Columns(0).DisplayIndex > dgAuswahl.Columns.Count - 1

verschiebe ich die erste Spalte meiner Access-Tabelle
in einem DataGridView ans Ende.
Das funktioniert an sich auch wunderbar...

Eben experimentierte ich mit
DataGrid_CellContentDoubleClick...
Auch das klappt an sich, aber wenn ich auf die erste
Spalte doppelt klicke, wird das Event nicht ausgelöst.

Das tut mir im Augenblick nicht sonderlich weh, aber
so recht verstehen kann ich es nicht



Wenn Du auf eine Zelle eines nicht schreibgeschützten
DataGridview klickst, wird mit dem ersten Klick der
Edit-Modus aktiviert und damit die vom DGV zum
Editieren der Daten verwendete Textbox in der betr.
Zelle angezeigt und aktiviert. Der zweite Klick Deines
Doppelklicks kommt damit nicht mehr beim DGV an,
sondern bei der darin enthaltenen Textbox.

Mit dem nachfolgenden Beispiel kannst Du Dir
ansehen, wann welches Ereignis von welchem der
beteiligten Objekte ausgelöst wird.

' /// Code in einer leeren Form
Public Class Form1
Private WithEvents DGV As DataGridView
Private WithEvents DGVTextbox As TextBox
Private mDT As DataTable
Private mDV As DataView
Private mCounter As Integer

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

DGV = New DataGridView
With DGV
.Dock = DockStyle.Fill
.DefaultCellStyle.Font = _
New Font("Arial", 12)

.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)
End With
Me.Controls.Add(DGV)

CreateData()
DGV.DataSource = mDV
DGV.AutoResizeColumns()
End Sub

Private Sub DGV_EditingControlShowing _
(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs _
) Handles DGV.EditingControlShowing

' Verweis auf die im DGV enthaltene Textbox holen:
DGVTextbox = DirectCast(e.Control, TextBox)
End Sub

Private Sub DGV_CellClick _
(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs _
) Handles DGV.CellClick

mCounter += 1
Console.WriteLine _
(mCounter.ToString & ": DGV_CellClick")
End Sub

Private Sub DGV_CellContentClick _
(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs _
) Handles DGV.CellContentClick

mCounter += 1
Console.WriteLine _
(mCounter.ToString & ": DGV_CellContentClick")
End Sub

Private Sub DGV_CellContentDoubleClick _
(ByVal sender As Object, _
ByVal e As DataGridViewCellEventArgs _
) Handles DGV.CellContentDoubleClick

mCounter += 1
Console.WriteLine _
(mCounter.ToString & ": DGV_CellContentDoubleClick")
End Sub

Private Sub DGVTextbox_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles DGVTextbox.Click

mCounter += 1
Console.WriteLine _
(mCounter.ToString & ": DGVTextbox_Click")

End Sub

Private Sub DGVTextbox_DoubleClick _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles DGVTextbox.DoubleClick

mCounter += 1
Console.WriteLine _
(mCounter.ToString & ": DGVTextbox_DoubleClick")

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("Text", GetType(String))

For i = 1 To 12
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = MonthName(i)
.Rows.Add(DR)
Next
.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