C# Textbox mit Strings mit TextBox.TextChanged Event verändern

Reinhard77

Lieutenant
Registriert
Feb. 2019
Beiträge
896
Ich habe eine Textbox wo ich mit einem String Array Strings eintrage. Dieser gesamt String wird über mehrere Checkboxen zusammengefügt und in die Textbox eingetragen. Nun möchte ich, wenn der Anwender Zeichen hinzufügt oder entfernt, dass die Textbox auf das Event TextBox.TextChanged reagiert und der gesamt String auf diese Anwender Änderung(en) angepasst wird.

Es gibt viele Beispiele dazu, aber ich finde keins was dem entspricht, was ich suche.

Eins habe ich gefunden, wo ich dachte das wäre das was ich suche und habe es auf meine Bedürfnisse angepasst.
Trotzdem ist da einiges unklar in dem Beispiel: Ich weiß nicht was ich für _query und _template eintragen muss bzw. wo das herkommt.

Außerdem bekommte ich zwei Fehlermeldungen bei textBoxZeichenvorrat:
-statische Typen können nicht als Rückgabetypen verwendet werden
-es ist schon eine Definetion für textBoxZeichenvorrat vorhanden

Wieso denkt VisualStudio die TextBox sei statisch?

Ist klar, ich habe die TextBox textBoxZeichenvorrat schon an anderer Stelle angelegt und nun meckert Visual Studio rum, das dies nicht noch mal geht. Aber ich will ja auch im Grunde nur den EventHandler dafür anlegen. Ich dachte ich könnte dafür einen EventHandler anlegen und fertig.

Und eine bei TextChangedEventHandler:
Der Typ oder -Namespacename wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis)

Wenn ich da den Lösungsvorschlägen folge, dann wird die Zeile:

C#:
using System.Windows.Controls;

vorgeschlagen, was wiederum nicht funktioniert.

C#:
       public TextBox textBoxZeichenvorrat(TextChangedEventHandler onTextChanged)
        {
            var StringTextBox = _template.textBoxZeichenvorrat(_query.Name, _query.NameBoxName);
            StringTextBox.TextChanged += onTextChanged;
            return StringTextBox;
        }
 
Zuletzt bearbeitet:
Ich gehe mal davon aus, dass Du die Textbox mit dem Designer von VisualStudio angelegt hast. Warum überlässt Du dem Designer dann nicht auch die "Arbeit", den Eventhandler anzulegen.

Also im Designer die Textbox markieren, die Properties der Textbox anzeigen, dort auf den Blitz klicken und beim Event "TextChanged" auf das leere Namensfeld doppelt klicken. Schon legt Dir VS alles an, was nötig ist und vergibt auch die korrekten Parameter. Wenn Du den Eventhandler umbenennen willst, dürfte das danach auch darüber möglich sein.

Legst Du Deine Textbox von Hand an, musst Du einerseits den EventHandler korrekt definieren, also z.B.
Code:
private void textBoxZeichenvorrat_TextChanged(object sender, EventArgs e)
Das könnte bei neuerem .NET anders aussehen, ich bleibe bei .NET 4.X bis mind. zum Lebensende von Win 10

Und dann muss Du zusätzlich aber auch den Handler dem Event zuweisen (C# ist kein VB.NET)
Code:
textBoxZeichenvorrat.TextChanged += new System.EventHandler(textBoxZeichenvorrat_TextChanged);
Das macht der Designer von VS sonst automatisch und zwar in der *.Designer.cs Datei
 
  • Gefällt mir
Reaktionen: Raijin
Zurück
Oben