Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
TextBox - Enter abfangen - MessageBox anzeigen
daengl
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Vorarlberg

Themenstarter:

TextBox - Enter abfangen - MessageBox anzeigen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von daengl am .
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

beantworten | zitieren | melden

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 :D
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Wax am .
private Nachricht | Beiträge des Benutzers
Dr.Z
myCSharp.de - Member

Avatar #avatar-2603.jpg


Dabei seit:
Beiträge: 93
Herkunft: Nettetal

beantworten | zitieren | melden

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

Viele Grüße

Dr. Z
private Nachricht | Beiträge des Benutzers
daengl
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Vorarlberg

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Tomot
myCSharp.de - Member

Avatar #avatar-2678.jpg


Dabei seit:
Beiträge: 706
Herkunft: Düsseldorf

beantworten | zitieren | melden

Du könntest mit einer boolschen Instanzvariable arbeiten, die du entsprechend setzt und abfragst.
mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de
private Nachricht | Beiträge des Benutzers
Dr.Z
myCSharp.de - Member

Avatar #avatar-2603.jpg


Dabei seit:
Beiträge: 93
Herkunft: Nettetal

beantworten | zitieren | melden

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 ;-)
private Nachricht | Beiträge des Benutzers
SeeQuark
myCSharp.de - Member

Avatar #avatar-2825.jpg


Dabei seit:
Beiträge: 959

beantworten | zitieren | melden

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 "True" setzen.

Btw.: http://if-schleife.de

mfg
SeeQuark
private Nachricht | Beiträge des Benutzers
daengl
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: Vorarlberg

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers