Laden...

Ereignis wie tbx.Leave, aber nur, wenn man in ein anderes Feld des Forms wechselt

Erstellt von SKe vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.009 Views
S
SKe Themenstarter:in
35 Beiträge seit 2009
vor 15 Jahren
Ereignis wie tbx.Leave, aber nur, wenn man in ein anderes Feld des Forms wechselt

Hallo zusammen,

ich brauche noch mal Euren Rat.

Ich möchte Werte in einem Form aktualisieren beim Verlassen eines Textfeldes.
Dazu gibt es das Ereignis txtFeld_leave.
Dieses wird aber auch quasi automatisch ausgelöst, z.B. wenn ich ein anderes Form öffne u.a.
Es soll aber nur passieren, wenn der Benutzer das Feld wechselt.

Dann gibt es noch txtFeld_textchanged.
Das wird aber bei jedem Tastenanschlag in dem Feld ausgelöst.
Ich bräuchte so etwas wie eine Kombination.
Die kann ich mir durch ein Flag selber schreiben. Aber ist das wirklich elegant?

Wie würdet Ihr das lösen?

R
234 Beiträge seit 2007
vor 15 Jahren

/Edit: Mist, das bringt dich wohl doch nicht weiter. Habe deinen Beitrag nicht aufmerksam genug gelesen.

Reagiere doch im Enter-Event. Wenn du die vorherige TextBox benötigst, kannst du dir diese ja merken.

Etwa so:


private TextBox lastTextBox = null;

private void txtFeld_Enter(object sender, EventArgs e) {
    if(lastTextBox != null) {
       // hier Werte in der Form aktualisieren
    }

    lastTextBox = sender as TextBox;
}

1.665 Beiträge seit 2006
vor 15 Jahren

Hast du es schon mit LostFocus anstatt Leave probiert?

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo SKe,

so ein Event kannst du dir selber bauen, in dem du mehrer Events aller Controls und des Forms "abhörst" und aus der Kombination der Events (und ggf. auch deren zeitlicher Abfolge) interpretierst, was eigentlich passiert ist. Sicher nicht ganz trivial. In Frage kommen z.B. die Events Enter, Leave, GotFocus, LostFocus, MouseMove, Activated, Deactivated.

herbivore

S
SKe Themenstarter:in
35 Beiträge seit 2009
vor 15 Jahren

Vielen Dank für die Antworten (hab gar nicht mehr damit gerechnet).

In der Zwischenzeit habe ich es so gelöst:
Ich frage die Tabulatortaste ab, mit der sich der Anwender in das nächste Feld bewegt.

Das ist aber auch nicht so wirklich schön, weil ich das Betätigen der Tab-Taste erst im nächsten Feld abfragen kann und das eine - wenn auch minimale - zeitliche Verzögerung mit sich bringt. (Und die User sind ja heutzutage so ungeduldig:-))

Also vielleicht schreibe ich es noch mal um, wenn mit am Wochenende langweilig ist.
Ich wünsche Euch ein schönes WE.