| |
VB.NET - FortgeschritteneNeuen Wert einer DataGridView-Zelle auslesen | | | Autor: Bitschieber | Datum: 02.07.08 14:59 |
| Hallo Forum,
ich kaue seit ein paar Stunden auf einem Problem herum, zu dem ich trotz nachdenken, ausprobieren, lesen und Forumssuche keine Lösung finde.
Bisher habe ich dies gemacht:
Ein DataSet mit einer Tabelle erstellt, diese Tabelle mit Daten aus einer SQLite-DB befüllt und an ein DataGridView (= DGV) mittels .datasource gebunden.
Die erste Spalte ist in der DB-Tabelle als Boolean formatiert, deshalb werden in der ersten Spalte des DGV CheckBoxen angezeigt, die anderen Spalten habe ich mittels .ReadOnly = True gegen editieren gesperrt. So weit so gut, funzt prima - im DGV werden die Daten angezeigt.
Der Nutzer soll nun munter in der ersten Spalte (= "Auswahl") die CheckBoxen aus- und wieder abwählen können, die Anzahl der ausgewählten CheckBoxen wird in einem Textfeld in der Statusbar angezeigt (ich denke, dass mir das auch kein Kopfweh bereiten wird).
Was mir aber vermehrt Schädelbrummen verursacht, ist dieses:
Wie bekomme ich raus, wie der AKTUELLE Wert der gerade angeklickten CheckBox ist? Und vor allen Dingen dann, wenn der Mauszeiger das DGV verlässt und auf ein anderes Control im Form geklickt wird?
Im Access-VBA(Ver. 2003) gibt es das schöne AfterUpdate-Ereignis, das ich da immer auswerte. Leider habe ich etwas vergleichbares trotz Sucherei nicht gefunden (sollte ich dabei Tomaten auf den Augen gahabt habe, so entschuldigt bitte).
Deshalb habe ich mir folgendes überlegt:
Das Problem mit dem Verlassen des DGV fange ich über das CellMouseLeave-Ereignis ab und dachte mir, dass ich dabei auch gleich den Wert der Check-Box mit auslesen kann. Also kam nun dieser Code zustande:
Private Sub DGV1_CellMouseLeave(ByVal Sender As Object, ByVal e As _
DataGridViewCellEventArgs) Handles DGV1.CellMouseLeave
Dim mCel As DataGridViewCell = Me.DGV1.CurrentCell, X as Integer
If DGV1.IsCurrentCellDirty = True Then X = CInt(mCel.Value)
MsgBox(X)
End Sub Pustekuchen: Leider ist es nun so, dass in der MsgBox IMMER 0 angezeigt wird, wenn der Mauszeiger die aktive Zelle verlässt und zwar unabhängig davon, ob die CheckBox ausgewählt ist oder nicht.
Für kurze Zeit dachte ich, dass ich mit dem CellValueChanged-Ereignis Erfolg habe (hier zeigt die MsgBox die korrekten Werte an), das funzt auch gut, solange der Nutzer innerhalb des DGV klickt, nur was mache ich, wenn er das DGV verlässt und auf ein anderes Control klickt, nachdem er die CheckBox aus- bzw. abgewählt hat?
Denn dann habe ich den Wert der zuletzt angeklickten CheckBox nicht.
Kann mir jemad weiterhelfen? Das wäre echt klasse!
Bitschieber
Beitrag wurde zuletzt am 02.07.08 um 15:00:07 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|