Veröffentlicht 16. Juli 200916 j 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
16. Juli 200916 j über das Objekt sender. Beispiel (C#-Code): if (gettype(sender)==typeof(system.windows.forms.textbox)) { messagebox.show( ((system.windows.forms.textbox)sender).name); } ..
16. Juli 200916 j ü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 Danke !
17. Juli 200916 j 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
17. Juli 200916 j if (gettype(sender)==typeof(system.windows.forms.textbox)) { messagebox.show( ((system.windows.forms.textbox)sender).name); } warum so lang? if(sender is TextBox){}
17. Juli 200916 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.