Laden...

Object sender beim Event auslesen.

Erstellt von cpetit vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.079 Views
C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren
Object sender beim Event auslesen.

Komme mal wieder nicht weiter.

Versuche gerade beim CurrentCellChanged-Event des DataGrid den "Object sender" auszulesen und mir den Wert von oldRow in einer Variabel zu merken.

Im Überwachungsfenster bekomme ich bei ((DataGrid)sender).oldRow den Wert 2 angezeigt.

Möchte ich diesen Wert an die dgBestand.CurrentCell = new DataGridCell(((DataGrid)sender).oldRow,3) übergeben, bekomme ich beim Kompilieren die Fehlermeldung "Auf 'System.Windows.Forms.DataGrid.oldRow' ist der Zugriff aufgrund der Sicherheitsebene nicht möglich"

Was mach ich Falsch?

Möchte gerne wenn ich die Zeile im Grid wechsel prüfen ob die Zelle 1 ≤ Zelle 2 ist. Wenn nicht dann makiere wieder Zelle 2 in der alten Reihe.

830 Beiträge seit 2005
vor 16 Jahren

Hallo cpetit,

Was mach ich Falsch?

Das Feld oldRow ist privat, und du kannst deshalb nicht darauf zugreifen.
Das "Überwachungsfenster" funktioniert mit Reflection und kann deshalb den Wert anzeigen.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Wie oder wo kann ich mir denn dann am besten die alte Zeile merken?

S
8.746 Beiträge seit 2005
vor 16 Jahren

Die Frage riecht danach, dass du noch überhaupt nicht firm in Sachen OO bist. Ich empfehle, nochmal ein paar Kapitel dazu in deinem Buch zu lesen.

Aber die Antwort heisst: Definiere oldRow als (private) Variable in deinem Forms-Objekt, auf der sich das DataGrid befindet.

C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Die Frage riecht danach, dass du noch überhaupt nicht firm in Sachen OO bist. Ich empfehle, nochmal ein paar Kapitel dazu in deinem Buch zu lesen.

Stimmt.

Aber die Antwort heisst: Definiere oldRow als (private) Variable in deinem Forms-Objekt, auf der sich das DataGrid befindet.

Verstehe ich nicht ganz. Stehe vermutlich total auf dem Schlauch

C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 16 Jahren

Bin zu einer Lösung gekommen.

Hätte aber noch eine Frage.

Wenn ich jetzt eine Zelle im DataGrid einen Wert eingebe und verlasse mit der Maus das DataGrid, dann steht das DataGrid immer noch im Edit-Modus.

Wie kann ich die Änderung bei "Leave-Event des DataGrid" speichern?

830 Beiträge seit 2005
vor 16 Jahren

Hallo cpetit,

freut mich, wenn du eine Lösung gefunden hast, aber poste diese doch bitte in Zukunft, da jemand anderes diese vielleicht braucht.

Im Leave-Event die Daten zu speichern, also den Editor zu schliessen halte ich für sehr ungünstig. Es ist so, dass wenn das Grid den Focus verliert dieses die noch nicht gespeicherten Daten speichert.
Mir ist kein Programm bekannt, bei welchem dies anders wäre.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

1.665 Beiträge seit 2006
vor 16 Jahren

Im Leave-Event die Daten zu speichern, also den Editor zu schliessen halte ich für sehr ungünstig. Es ist so, dass wenn das Grid den Focus verliert dieses die noch nicht gespeicherten Daten speichert.
Mir ist kein Programm bekannt, bei welchem dies anders wäre.

Im SQL Server Management Studio z.B. werden die Werte nach jedem Row-Wechsel gespeichert 😉 Vielleicht meintest du das mit dem Grid-Focus Lost, hast aber das falsche geschrieben 😉

830 Beiträge seit 2005
vor 16 Jahren

hast aber das falsche geschrieben

Jup, hab ich. Meinte eigentlich, wenn der Editor der Zelle den Fokus verliert.
Hab mich wohl zu sehr auf das

verlasse mit der Maus das DataGrid

eingeschossen.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.