Zum Inhalt springen

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


Empfohlene Beiträge

Geschrieben

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

Geschrieben

über das Objekt sender.

Beispiel (C#-Code):


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

{

  messagebox.show(

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

}

..

Geschrieben
ü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 !

Geschrieben

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

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

{

  messagebox.show(

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

}
warum so lang?

if(sender is TextBox){}

Geschrieben

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 :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...