Typisierung, Forms, Eventhandler

07/12/2008 - 19:01 von Klaus Pater | Report spam
Hallo & guten Tag

dem

Public XYForms As New Generic.Dictionary(Of String, Form)

füge ich eine unbestimmte Anzahl an Formularen zu, über die ich dann
spàter über den Schlüssel zugreifen will. Die Formulare sind
unterschiedlich.

Den Forms haben ich ergànzende Events hinzugefügt.

Frage:
Gibt es eine Möglichkeit, den Values (Forms)

'For Each de As Generic.KeyValuePair(Of String, Form) In XYForms
' AddHandler Ctype(de.Value, <TypVon de.Value>), AddressOf
frmEvents_StatusText
'Next

Ereignishandler zuzuordnen?

Gruß und besten Dank im Voraus für jede Antwort

Klaus
 

Lesen sie die antworten

#1 Armin Zingler
07/12/2008 - 19:13 | Warnen spam
Klaus Pater wrote:
Hallo & guten Tag

dem

Public XYForms As New Generic.Dictionary(Of String, Form)

füge ich eine unbestimmte Anzahl an Formularen zu, über die ich dann
spàter über den Schlüssel zugreifen will. Die Formulare sind
unterschiedlich.



Inwiefern unterschiedlich?

Den Forms haben ich ergànzende Events hinzugefügt.

Frage:
Gibt es eine Möglichkeit, den Values (Forms)

'For Each de As Generic.KeyValuePair(Of String, Form) In XYForms
' AddHandler Ctype(de.Value, <TypVon de.Value>), AddressOf
frmEvents_StatusText
'Next

Ereignishandler zuzuordnen?



Der Ansatz ist ja schon richtig. Du musst nur noch zum entsprechenden Typ
casten, also zu dem Typ, in dem das Ereignis definiert ist.
Vermutlich hast du aber verschiedene Klassen, in dem jeweils ein Ereignis
mit demselben Namen definiert ist. Dann solltest du das in einer gemeinsamen
Basisklasse unterbringen, von der alle Formulare erben. Dann kannst du zu
dem Typ der Basisklasse casten. Ansonsten müsstest du umstàndlich jeden
Form-Typ einzeln behandeln:

if typeof de.value is form1 then
addhandler directcast(de.value, form1).ereignis,...
elseif typeof de.value is form2 then

addhandler directcast(de.value, form2).ereignis,...
'..
end if



Armin

Ähnliche fragen