Laden...

TextBox - Enter abfangen - MessageBox anzeigen

Erstellt von daengl vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.868 Views
D
daengl Themenstarter:in
18 Beiträge seit 2008
vor 14 Jahren
TextBox - Enter abfangen - MessageBox anzeigen

Hallo alle zusammen,

ich habe gerade ein Problem und stehe total auf der Leitung:
Ich habe eine Textbox zur Eingabe eines Dateipfades. Durch Drücken von Enter soll dieser übernommen und die Datei gelesen werden. Dazu habe ich den PreviewKeyUp-Handler folgendermaßen erstellt:

private void textBoxNCPFile_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key != System.Windows.Input.Key.Enter) return;
            e.Handled = true;
            ReadToolData(textBoxNCPFile.Text);
        }

Die Funktion ReadToolData() überprüft ob die angegebene Datei existiert, wenn nicht wird eine MessageBox mit Fehlermeldung angezeigt.

Bestätige ich nun die MessageBox mit Enter, so kommt die immer wieder, weil der KeyUp-Handler immer wieder aufgerufen wird!

Was mache ich falsch?

Danke für Eure Hilfe.
mfg daengl

731 Beiträge seit 2006
vor 14 Jahren

Hi daengl,

in deinem Fall musst Du den "sender" überprüfen so wie ich das sehe...

MfG
wax

edit: vergiss es wieder. ich bin um die uhrzeit schon wieder zu müde um konzentriert quellcode zu lesen 😄

88 Beiträge seit 2007
vor 14 Jahren

Dann setze doch den Focus vor dem Überpüfen einfach auf das Form zurück.

Viele Grüße

Dr. Z

D
daengl Themenstarter:in
18 Beiträge seit 2008
vor 14 Jahren

Hallo Dr. Z,

wie meinst du das genau? 🤔
Ich habe im o.g. Code vor der if-Schleife ein MainWindow.Focus(); eingefügt, bringt gar nichts.

mfg daengl

691 Beiträge seit 2007
vor 14 Jahren

Du könntest mit einer boolschen Instanzvariable arbeiten, die du entsprechend setzt und abfragst.

mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de

88 Beiträge seit 2007
vor 14 Jahren

Hi, ja, das hatte ich gemeint. 😃 War auch nur ne spontane Idee, die ich hatte.
Nebenbei heißt die if-schleife nicht if-schleife, weils keijne schleife ist, sondern nur eine Abfrage 😃

Ich denk nochmal drüber nach 😉

946 Beiträge seit 2008
vor 14 Jahren

Ich mach das immer so:

<Button ... IsDefault="{Binding IsFocused, ElementName=textBox}"/>

Bei einem Enter wird also schön der Button gedrückt, den du sowieso noch zur Kennzeichnung haben solltest.
Alternativ kannst du IsDefault direkt auf :::{style="color: darkred;"}&quot;True&quot;){darkred} setzen.

(Btw.: http://if-schleife.de){gray}

mfg
SeeQuark

D
daengl Themenstarter:in
18 Beiträge seit 2008
vor 14 Jahren

Hallo,

Ich habe es nun über eine boolsche Variable gelöst, so funktioniert es.

Der Vorschlag mit dem Button funktioniert in diesem Fall nicht, da es sich hierbei um ein Feld zur Eingabe eines Dateinamens handelt und der Knopf daneben "Durchsuchen" heisst, was ich ja nicht unbedingt will wenn ich den Pfad direkt eingebe.

Danke für eure Hilfe
mfg daengl

PS: Tut mir leid, mein erster Informatiklehrer hatte so seine Probleme mit der deutschen Sprache und einmal falsch gelernt wirds schwierig die IF-Schleife wieder loszuwerden. Ich werde mich aber bemühen
PPS: In diesem Fall war es aber wirklich eine IF-Schleife 😁