| |
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 |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 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
|
|