2009-03-05 6 views
0

Ich bin ein Formular mit ein paar Tasten und eine Combobox zur Laufzeit zu schaffen.wie kann ich Ereignisse zur Laufzeit fangen Objekte

dim f as new form 

(bla bla)

dann die Tasten acceptDescription und rejectDescription eingerichtet sind ...
dann die Combobox descriptionCombo eingerichtet ist ...

Then ...

AddHandler acceptDescription.Click, AddressOf handleAcceptedDescription 
AddHandler rejectDescription.Click, AddressOf handleRejectedDescription 

dann habe ich diese beiden Methoden, um die Click-Ereignisse zu fangen ... aber kann nicht herausfinden, wie die andere Laufzeit verweisen erzeugen d steuert. (Combobox wenn akzeptiert, Formular wenn abgelehnt)

Antwort

0

Um globale Definitionen zu vermeiden, ist die beste Antwort

Private Sub handleRejectedDescription(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    'sender is a button in this case. 
    'get the button 
    dim b as new button 
    b = ctype(sender,button) 
    'now get the button's parent form 
    dim f as new form 
    f = ctype(b.parent, form) 
    'now close the form 
    f.close() 
End Sub 
0

Warum können Sie nicht darauf verweisen? Speichern Sie es einfach als eine Modul/Form-Level-Variable und Sie sind eingestellt.

1

Wenn der Code für das Formular in Ihrer Hauptform erzeugt, erklären Sie dann das Formular Variable auf Klassenebene der Klasse Hauptform, so dass Sie es von den Event-Handler zugreifen können. Dasselbe gilt für Ihre Combobox und Ihr Textfeld. Sie müssen sicherstellen, dass die Variablen außerhalb des Bereichs der Handler deklariert sind, sodass Sie sie innerhalb der Handler referenzieren können.

+0

, die funktionieren sollte - aber ich dachte, dass es ohne Deklaration globaler Variablen möglich sein muss. Dank. – m42

+0

Wenn das Formular jedes Mal auf die gleiche Weise generiert wird, sollten Sie möglicherweise eine neue Form-Unterklasse schreiben, wobei die Combobox und das Textfeld öffentlich deklariert werden. –

Verwandte Themen