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
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
danke, dann könnte ich das ja via Timer checken, so zB
if (Letzte Eingabe vor 2s) machwas;
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
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.
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.
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?
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.
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 🙁
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.
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.
danke, langsam funktionnierts.
Hab jetz eine kombination zwischen timer und Fokusverlust, dasjenige event welches zuerst auftritt wird behandelt.
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
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