Zum Inhalt springen

[VB.net] AddHandler bei Dynamisch erzeugten TextBoxen. Ident. der Box


SeaStorm

Empfohlene Beiträge

Hi

Ich erzeuge beliebig viele Textboxen dynamisch. Diese bekommen jeweils über AddHandler einen KeyPress Event zugewiesen.

Nun feuert dieses Event auch brav, aber ich weiss nun innerhalb dieses Events ja nicht welche Box gerade geändert wurde. Oder doch ?

Ich muss irgendwie herausfinden wie der Inhalt der TextBox ist.

So schaut das ganze dann am Ende bei mir aus

Dim txtLiefVon(_n) As Windows.Forms.TextBox


...(code und schleife)

txtLiefVon(count) = New Windows.Forms.TextBox

AddHandler txtLiefVon(count).KeyPress, AddressOf txtLiefVon_KeyPress


....




Private Sub txtLiefVon_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)

....(MachWas)

End Sub

wie kann ich nun also in dem Event sagen MsgBox(geänderte_textbox.text) ?!

Stehe völlig auf dem schlauch :\

Gruss Sea

Link zu diesem Kommentar
Auf anderen Seiten teilen

über das Objekt sender.

Beispiel (C#-Code):


if (gettype(sender)==typeof(system.windows.forms.textbox))

{

  messagebox.show(

    ((system.windows.forms.textbox)sender).name);

}

..

argl .. jo dachte ich mir auch so. Das tolle IntelliSense hats net angezeigt ... Manman ich werde weich dadurch :P

Danke !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist das nicht zu viel Overhead?

Wenn du weißt, dass nur deine Textboxen das Event feuern, kannst du auch einfach sowas machen:

messagebox.show(String.Format((textbox)sender).name + " " + (textbox)sender).text);

Oder

textbox tbx = (textbox)sender;

mb[TabTab]String.Format(tbx.name + " " + tbx.text);

Also das selbe wie SeaStorm sagt, nur ohne die if-Abfrage (wenn du sicher bist, dass nut deine textboxen das Event feuern)

Alternativ kannst du natürlich auch deine eigenen AventArgs definieren und e.tbName und e.tbText abfragen, dann hast du noch weniger ungenutzte Informationen gebraucht.

Aber eigendlich ist das alles völlig ähnlichwertig, den Zeiger eben auf ein anderes Objekt im RAM zu verlegen kostet überall ähnlichviel (glaube ich), und der Compiler (pre-compiler) optimiert eh noch einiges zurecht (schneller und so), also, machs am besten wie SeaStorm geschrieben hat.

Vllt. noch ein Debug.Assert(false) im else-Teil (falls doch mal wer anders das Event feuert) oder so....

Ich merke gerade, ich habe zu viel Zeit... muss mal arbeiten, also dann, gruß Kosi

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich binn ja nicht hier 'angetreten' um besonders schönen oder effizienten code darzustellen, sondern um zu verdeutlichen, wie das vom OP beschriebene Problem gelöst werden kann.

ich sag auch mal, liebe eine if-abfrage mehr und entsprechend mehr overhead als hinterher ein unbehandelter Fehler. :) Glaube nicht das sich die eine Abfrage mehr oder weniger in irgenteiner Weise -messbar-, geschweige denn -spürbar- performance-technisch auswirkt :)

Das IS Schlüsselwort war mir nocht nicht bekannt. Find ich gut :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...