Quick-Tipp: TextArea mit TextChange-Event auch für AppendText

Ich freue mich sehr, wenn mich Anfragen erreichen. Um so mehr, wenn ich sie auch (schnell) beantworten kann, und ganz doll, wenn das dann auch noch Material für einen schnellen Programmiertipp liefert.

So war es auch gerade: TextArea kennt die bequeme AppendText-Methode, die zum schnellen Anfügen von Text dient. Aber dann feuert der TextChange-Event nicht, der in einigen Situationen an dieser Stelle besser doch aktiv werden sollte.

Nun gibt es zwar die Quick & Dirty-Methode, einfach nach AppendText ein

TextArea1.Text = TextArea1.Text

aufzurufen. Aber das ist in der Tat dirty, insbesondere dann, wenn ausgezeichneter (bunter, fetter …) Text eingefügt wurde. Der verliert diese Auszeichnungen dann nämlich.

Was hilft in solchen Fällen stets? Eine eigene Unterklasse. Und die sei hier in aller Kürze vorgestellt:

TextChangeTextArea, so ihr Name, beruht natürlich auf dem TextArea. Also legt man eine Klasse dieses Namens an und setzt die Superklasse auf TextArea.

Wir brauchen Kontrolle über den TextChange-Event, deshalb wird ein Eventhandler dafür definiert, mittels Rechtsklick auf seinen Eintrag im Navigator und Wahl von „Create Event Definition from Event“ dupliziert und ihm der folgende sagenhafte Code verpasst:

Sub TextChange() Handles TextChange
 RaiseEvent TextChange
End Sub

An dieser Stelle wird der normale TextChange-Event also einfach durchgeschleift.

Dann bekommt die neue Klasse noch eine neue Methode, nämlich

Public Sub AppendText(text As String)
 super.AppendText (text)
 RaiseEvent TextChange
End Sub

Die AppendText-Methode des TextAreas wird also überschrieben, intern durch super.AppendText aber aufgerufen. Nur dass zusätzlich noch der Event feuert.

zack feddichTextChangeTextArea!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s