Laden...

TextBox TextChanged Event bei jeder einzelnen Eingabe

Erstellt von over_g vor 17 Jahren Letzter Beitrag vor 17 Jahren 9.795 Views
O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren
TextBox TextChanged Event bei jeder einzelnen Eingabe

Hallo,
Ist das normal, dass das TextChanged Event bei jedem neuen Zeichen das eingegeben wird, auslöst?
Wie kann ich das verhindern? Ich möche das Event nur dann auslösen, wenn der user fertig ist mit der Eingabe (eine Zeile, ein string)
merci,
Marc

2.223 Beiträge seit 2005
vor 17 Jahren

moin

textchange jedes zeichen--> ja es ist so normal

wie soll man wissen das der user fertig ist höchstens mit onlost

naja selber abprüfen wäre ja auch noch möglich


if (zeile_fertig){
mach was
}

mfg

O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren

danke, dann könnte ich das ja via Timer checken, so zB
if (Letzte Eingabe vor 2s) machwas;

2.223 Beiträge seit 2005
vor 17 Jahren

Original von over_g
danke, dann könnte ich das ja via Timer checken, so zB
if (Letzte Eingabe vor 2s) machwas;

dies wäre ne möglichkeit jedoch 1 finger adler such system geschwindigkei 10 anscläge / min

was dann

mfg

O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren

hmm. Es geht um die Bennenung eines Eintrags, somit ist es nicht möglich die Länge vorher zu kennen. Die einzige möglichkeit wäre somit, dass der user selbst das Eingabe-Ende bestätigt, was ich jedoch nicht will. Habe ich noch andere Möglichkeiten? Ich Habe es noch mit MouseLeave versucht, haut nicht hin, da der Mauszeiger selten innerhalb der Box bleibt.

B
1.529 Beiträge seit 2006
vor 17 Jahren

Dazu sind Validated / Validating da.

6.862 Beiträge seit 2003
vor 17 Jahren

Wie wärs mit FocusLost(oder wie des grad heißt) der TextBox oder sowas? Weil dann gibt der User definitiv kein Text mehr ein.

Baka wa shinanakya naoranai.

Mein XING Profil.

O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren

Dazu sind Validated / Validating da.

a bin ich jetz garde ein bisschen ratlos. Was soll ich "Validaten"?

talla,
Wann genau verliert eine Textbox den focus?

B
1.529 Beiträge seit 2006
vor 17 Jahren

Das sind Events. Diese werden aufgerufen, wenn ein Control den Fokus verliert. Das eine vor dem Verlust, das andere danach. Sie haben die Möglichkeit, das Verlassen des Controls zu unterbinden.

O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren

um mal resultate statt fragen zu präsentieren:

public partial class DelayedTextBox : TextBox
    {
        private int _delay;

        public DelayedTextBox()
        {
            InitializeComponent();
        }

        public int Delay
        {
            get
            {
                return _delay;
            }
            set
            {
                _delay = value;
            }
        }

        protected override void OnTextChanged(EventArgs e)
        {

            timer1.Stop();
            timer1.Start();

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            base.OnTextChanged(e);
        }
    }

Das mit dem Fokus verlieren: Das sagt mir das validating event? Habe ich das richtig verstanden? Der user muss aber zwingendermassen etwas aneres anclicken, sonst bleibt der Fokus auf der textBox oder?
Ich kann es fast nicht glauben, dass meine Software an so atwas offensichtlich simplen wie an einer eingabe scheitert, nachdem ich schon wochen am programmieren bin 🙁

B
1.529 Beiträge seit 2006
vor 17 Jahren

Wenn man bei einem Eingabe-Control das Property CausesValidation auf true setzt, wird vor dem Verlust des Fokus (durch Maus, TAB etc.) das Validating-Event ausgelöst. Dieses kann den Nutzer über eine fehlerhafte Eingabe informieren (ErrorProvider) und den Verlust des Fokus verhindern.
Nur wenn Validating ok ergibt, wird Validated aufgerufen. Dieses kann jetzt das Fehlersymbol o.ä. wieder entfernen.
Siehe dazu in der MSDN das Beispiel zu Validating.

6.862 Beiträge seit 2003
vor 17 Jahren

Original von over_g
Der user muss aber zwingendermassen etwas aneres anclicken, sonst bleibt der Fokus auf der textBox oder?

Jein, der Focus wechselt auch wenn man z.b. mit Tab weiternavigiert. Aber des ist n elementares Prizip das immer nur ein Steuerelement den Focus haben kann. Wenn deine Textbox den nicht mehr hat, wodurch auch immer, dann ist die Eingabe auch abgeschlossen.

Baka wa shinanakya naoranai.

Mein XING Profil.

O
over_g Themenstarter:in
14 Beiträge seit 2006
vor 17 Jahren

danke, langsam funktionnierts.
Hab jetz eine kombination zwischen timer und Fokusverlust, dasjenige event welches zuerst auftritt wird behandelt.

4
51 Beiträge seit 2006
vor 17 Jahren

Hi,

meiner meinung nach solltest du die idee mit dem timer komplett vergessen!
so wie ich das verstanden habe, gibt der user in einer textbos einen text ein (eine benennung) dann wechselt er ins nächste feld...
dann reicht das focus lost event...
zur not kannst du auch noch mit dem textchange event abfangen, ob der user ENTER drückt, und dann darauf reagieren.

Aber Timer hat hier keinen Sinn.

LG

563 Beiträge seit 2004
vor 17 Jahren

Das Timerzeugs ist absoluter Schwachsinn! Das ist pures gebastel Dies ist doch ein klares zeichen, dass du den falschen Event verwendest. Validating/Validated Event ist GENAU das was du brauchst.

Ansonsten könntest du auch den MausMove event nehmen, und nen Timer drüber, und da überprüfen ob die richtige TextBox ausgewählt ist grübel

Mach dir das Leben nicht unnötig kompliziert =)

.unreal