Dynamisches Hinzufügen von Events (z.B. für Button)
lima-city → Forum → Programmiersprachen → Basic
auslsen
beitrag
button
dankeschn
denke mal
dynamische events
dynamische form
dynamischen button
ereignis
fehler
formen
gleiche fenster
laufzeit
lsen
muster
mglichkeit
passenden parameter
sender
vielen dank
wichtige frage
-
Hi Leute,
ich habe also ein DYNAMISCH ERSTELLTES FORM und habe auf diesem einen Button (dynamisch) eingefügt >> nun möchte ich gern wissen, wie ich, wenn man darauf klickt ein Event auslöst...
(Name: Button1)
Könnt ihr mir sagen, wie ich dynamische Events (oder Event-Handler) [ich weiß nicht genau wie das nun eigentlich heißt] erstellen kann??
PS: Danke noch mal an cbhp, welcher mir bei meinem letzten Problem sehr geholfen hat*gg*;)
Vielen Dank im Voraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
button1_Click ()
msgBox \"lal\"
End Sub
---> Wie wärs damit?
Und, wenn das nicht geht, was hast du dann für einen \"Dynamischen Button\" ? -
welche version von vb hast du denn?
-
Ich denke mal du beziehst dich auf das Thema, wie du eine dynamische Form erstellen kannst.
Das Hinzufügen von Ereignissen ist ganz einfach mit \"AddHandler\".
Beispiel:
Hier wird dem Button1 in der Form1 das Click-Ereignis dynamisch zugewiesen.
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler Form1.Button1.Click, AddressOf DynamicClick End Sub Sub DynamicClick(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox(\"Dieses Ereignis wurde dynamisch erstellt.\") End Sub
Code bezieht sich wieder auf VB .NET 2005
Beitrag geändert: 28.9.2007 23:06:41 von cbhp -
Dankeschön, funktioniert alles wunderbar!!
cbhp, DU bist ein VB-Gott!!
Beitrag geändert: 30.9.2007 17:36:56 von lccserver -
So, dann habe ich gleich noch ne WICHTIGE Frage:
Und zwar, wenn ich jetzt 5 gleiche Fenster (dynamisch) erstellt habe...
Namen: Form1 - Form5
Und jetzt klicke ich auf Button1 (auf Form1), dann wird trotzdem 5 mal das button-event ausgeführt, wie kann ich bei Auslösen des Button-Events überprüfen, zu welchem Form der angeklickte Button gehört??
Danke im Voraus -
Dann hast du wohl den Handler 5 mal für den gleichen Button zugewiesen, anstatt den Button jeder Form (1-5) einmal zuzuweisen...
also du musst dann schon schreiben:
AddHandler Form1.Button1.Click, AddressOf DynamicClick
AddHandler Form2.Button1.Click, AddressOf DynamicClick
AddHandler Form3.Button1.Click, AddressOf DynamicClick
AddHandler Form4.Button1.Click, AddressOf DynamicClick
AddHandler Form5.Button1.Click, AddressOf DynamicClick
Wobei \"DynamicClick\" irgendeine Prozedur sein kann (die natürlich die passenden Parameter hat)
-
Das Problem dabei ist aber, dass
AddHandler Form1.Button1.Click, AdressOf DynamicClick
als Fehler erkannt wird, weil Form1 ja erst zur Laufzeit
erstellt wird (das ist auch das selbe bei Form2-Form5)
Gibts da ne Möglichkeit das zu umgehen??
Stimmt...
aber du könntest es so lösen, dass du eine Muster-Form erstellst im Entwurfsmodus, diese nennst du z. B. FormMuster. Dort befindet sich auch ein Button (\"Button1\").
Nun erstellst du dynamisch deine 5 Formen:
Dim Form1 As New FormMuster
Dim Form2 As New FormMuster
Dim Form3 As New FormMuster
Dim Form4 As New FormMuster
Dim Form5 As New FormMuster
Natürlich kannst du auch bei dieser Form alles noch nachträglich dynamisch verändern.
...und nun fügst die Handler für die Buttons hinzu:
AddHandler Form1.Button1.Click, AddressOf DynamicClick
AddHandler Form2.Button1.Click, AddressOf DynamicClick
AddHandler Form3.Button1.Click, AddressOf DynamicClick
AddHandler Form4.Button1.Click, AddressOf DynamicClick
AddHandler Form5.Button1.Click, AddressOf DynamicClick
Eine Frage nebenbei: Für was braucht man so viele dynamische Forms? -
Nun ja...diese dynamischen Forms brauche ich zur \'Nachrichtenübermittlung\'...
-
lccserver schrieb:
Nun ja...diese dynamischen Forms brauche ich zur \'Nachrichtenübermittlung\'...
Aber es wird doch wohl kaum jede Form komplett anders aufgebaut sein, oder?
Dann bietet es sich doch an, eine Form im Entwurfsmodus zu erstellen, die die grundlegenden Steuerelemente enthält (Buttons, MenuStrip, ...). Hier kannst du dann auch ein Ereignis gleich festlegen oder später auch dynamisch darauf zugreien.
Dann kannst du während der Laufzeit diese Muster-Form auch noch dynamisch anpassen, um Steuerelemente zu ändern etc.
Also dann
Dim Form1 As New FormMuster
Dim Form2 As New FormMuster
usw. -
Joa, so werd ichs machen, danke dir!!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage