C# Event dauerhaft ausführen?
Hallo. Ich möchte die Buchstaben einer TextBox in C# zählen. Das funktioniert aber nicht, da es ausgeführt werden muss. Per Button geht es, aber man muss immer wieder klicken. Wie kann man etwas dauerhaft ausführen?
5 Antworten
Du kannst natürlich einen Timer nehmen, der die Berechnung alle paar Millisekunden durchführt, aber das führt zu völlig überflüssiger CPU-Belastung und sollte deshalb vermieden werden.
Die Berechnung ist ja nur nötig, wenn sich der Inhalt der TextBox ändert. Dafür hat die TextBox das Ereignis TextChanged.
-----
Einen Ereignishandler kann Visual Studio selbständig erstellen: wenn du im Formularentwurf einen Doppelklick auf die TextBox machst, landest du automatisch in der neu angelegten Methode
private void textBox1_TextChanged(object sender, EventArgs e) {
[blinkende Schreibmarke]
}
(im Hintergrund wird im "Designer" des Formulars auch das Ereignis mit dem Ereignishandler verknüpft:
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
aber das braucht dich am Anfang nicht zu interessieren)
In diesem Ereignishandler kannst du das Zählen durchführen (am einfachsten durch Zugriff auf
textBox1.Text.Length
) oder die Zählroutine aufrufen (was meinem persönlichen Stil mehr entsprechen würde -- Logik der Datenverarbeitung soweit wie möglich von ihrer Auslösung durch Interfaces trennen)
Die Textboxe hat doch ein onChange Event.
Sobald etwas verändert wird wird das Event angestoßen.
gerade als Einsteiger solltest du dir das selbst anlesen - du lernst es sonst nicht =/
Sorry war bissle langsam, PWolff hat's detaillierter erklärt
Entweder per Timer, oder per Event.
Du kannst einen Timer hinzufügen, du musst dann einstellen, wie schnell er ausgeführt werden soll und du muss ihn Starten. Wie man einen Timer verwendet, siehst du hier: https://www.youtube.com/watch?v=tVlYojL7iCI
Oder in einem andern Videotutorial.
Um ein Event zu verwenden, kannst du einen Doppelklick auf die TextBox machen. Du kannst dann dort den Code einfügen. Jedes Mal wenn der Inhalt der TextBox sich verändert, wird der Code ausgeführt.
Ich hoffe ich konnte dir weiterhelfen, bei weiteren Fragen stehe ich gerne zur Verfügung.
MfG, M Gaspard
du lässt es einfach per timer in intervallen wieder auftreten
Ich habe es so versucht:
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
myTimer.Interval = 1000; // 1000 ms is one second
myTimer.Start();
public static void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
MessageBox.Show("Test");
}
Fehler:
Ungültiges Token "+=" in Klassen-, Struktur- oder Schnittstellenmemberdeklaration.
Bezeichner erwartet
nutze bitte den Tipp
nimm die Systemzeit, nimm eine Konstante oder formel und kombinier das mit einer undfunktion die dann deine Aktion auslöst
--- CLOSED ---
Okey Danke an alle. Hat funktioniert mit textBox1_TextChanged
Frage wurde bereits beantwortet. Wenn du weitere c# beantworten würdest:
Auf meinem Profil