Entwickler-Ecke
Basistechnologien - Event zur Laufzeit einfügen
John Sanson - Mo 14.05.07 17:54
Titel: Event zur Laufzeit einfügen
Hi,
ich habe ein Objekt(Control) welches ich erst zur Laufzeit dynamisch erstelle.
Wie kann ich nun auf die Ereignisse des Objekts zugreifen?
z.B KeyPress
Gruß Chris
alias5000 - Mo 14.05.07 22:55
Ein Beispiel:
C#-Quelltext
1:
| wclient.UploadProgressChanged += new System.Net.UploadProgressChangedEventHandler(wclient_UploadProgressChanged); |
Das ist jetzt ein Event des WebClients.
Wenn du den Anfang tippst, etwa bis "+=", dann steigt Visual Studio 2005 gleich mit ein und schlägt den Rest von selbst vor.
wclient_UploadProgressChanged ist dann die Methode, die bei dem Ereignis ausgeführt wird.
Gruß
alias5000
John Sanson - Mo 14.05.07 23:26
Ist es auch möglich immer das gleiche Event auf alle gleichen Controls anzuwenden z.B.
TextBox.Change += new System......?
Also das dieses Ereignis von alles Controls gleichen Typ aufgerufen wird.
UGrohne - Di 15.05.07 07:06
John Sanson hat folgendes geschrieben: |
Ist es auch möglich immer das gleiche Event auf alle gleichen Controls anzuwenden z.B.
TextBox.Change += new System......?
Also das dieses Ereignis von alles Controls gleichen Typ aufgerufen wird. |
Klar, ist ja genauso in Delphi möglich ;)
John Sanson - Di 15.05.07 21:09
hmm es funktioniert nicht so wie es soll.
Hättest du etwas Beispielcode dazu?
UGrohne - Mi 16.05.07 08:44
John Sanson hat folgendes geschrieben: |
hmm es funktioniert nicht so wie es soll.
Hättest du etwas Beispielcode dazu? |
Was funktioniert nicht, wie äußert es sich und welchen Code hast Du dafür geschrieben? Du musst schon mehr Informationen geben.
John Sanson - Mi 16.05.07 11:59
Also wenn ich
C#-Quelltext
1:
| textBox1.TextChanged += new EventHandler(textBox1_TextChanged); |
ist ja alles ok.
Aber ich will ja ein Event für alle TextBox Objekte. Hab versucht
C#-Quelltext
1:
| TextBox.TextChanged += new EventHandler(textBox_TextChanged); |
aber von dort kann ich nicht aufs Event zugreifen.
JüTho - Mi 16.05.07 12:17
Aber so geht es doch:
C#-Quelltext
1: 2:
| TextBox1.TextChanged += new EventHandler(AllTextBoxes_TextChanged); TextBox2.TextChanged += new EventHandler(AllTextBoxes_TextChanged); |
Gruß Jürgen
John Sanson - Mi 16.05.07 12:27
ja das stimmt. So hab ichs auch gestern Abend noch gemacht.
Dachte nur ich kann der Klasse direkt dieses Ereignis zuweisen, damit bei instanzierung das event sofort vorhanden ist.
UGrohne - Mi 16.05.07 12:34
John Sanson hat folgendes geschrieben: |
ja das stimmt. So hab ichs auch gestern Abend noch gemacht.
Dachte nur ich kann der Klasse direkt dieses Ereignis zuweisen, damit bei instanzierung das event sofort vorhanden ist. |
Nein, das geht so nicht. Aber Du könntest über das Controls-Property alle Controls durchgehen und die Textboxen entsprechend ändern:
C#-Quelltext
1: 2: 3: 4: 5:
| foreach (Control c in this.Controls) { if (c.GetType() == typeof(TextBox)) ((TextBox) c).TextChanged += new EventHandler(AllTextBoxes_TextChanged); } |
Der Code ist jetzt aus dem Kopf geschrieben, daher keine Gewähr, dass er so direkt funktioniert ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!