Hallo VB-Freaks,
kann mir jemand sagen, wie man EventHandler aus einer Bibliothek heraus erstellt?
Also wie man grundsätzlich einem per Code erzeugten Steuerelement einen EventHandler
hinzufügt weiß ich, aber ich komme mit Folgendem nicht ganz klar (z.B.):
Erläuterungen:
Bei 1 übergebe ich der Funktion (in einer .dll !) ein Panel, auf das gezeichnet werden soll.
Bei 2 erzeuge ich eine ArrayList, in der ich die zu erzeugenden Label-Referenzen speichern will.
Ab 5. und 7. zeichne ich ein 9x9 großes Label-Feld auf das übergebene Panel.
Bei 10 werden die Labels erzeugt und ihnen
im Folgenden (11-19) ein paar Eigenschaften zugewiesen.
Bei 20 werden jeweils die Labels dem Panel(-Container) und
bei 21 die Referenzen der ArrayList (die bei 24 dem aufrufenden Form zur Verfügung steht)
übergeben.
Soweit so gut, aber der Haken liegt für mich in der bei 18 auskommentierten Zeile:
Würde ich nun diese Funktion in einem Form direkt eingeben, dann tritt solange die
Fehlermeldung "Cell_Click wurde nicht deklariert" auf, wie keine (Event-)Funktion
mit dem Namen 'Cell_Click' vorliegt - also fügt man sie ein und alles ist in Ordnung!
In meinem Fall, dass sich die Funktion in einer .dll befinden soll, weiß sie ja nichts
von einer 'Cell_Click'-Funktion in dem Form!?
Wie kann man das regeln? Weiß jemand hiefür eine Lösung?
PS: Ich habe meine Frage etwas ausführlicher formuliert, da ich auf
Missverständnisse basierende Antworten vermeiden möchte.
kann mir jemand sagen, wie man EventHandler aus einer Bibliothek heraus erstellt?
Also wie man grundsätzlich einem per Code erzeugten Steuerelement einen EventHandler
hinzufügt weiß ich, aber ich komme mit Folgendem nicht ganz klar (z.B.):
VB.NET-Quellcode
- Public Shared Function Cells(ByRef PnlCells As Panel) As ArrayList
- Dim TmpList As New ArrayList
- Dim CellSz As Integer = 50
- Dim iCt As Integer = -1
- For Row As Integer = 1 To 402 Step CellSz - 1
- Row -= 2 * ((Row = 148) Or (Row = 297))
- For Col As Integer = 1 To 402 Step CellSz - 1
- Col -= 2 * ((Col = 148) Or (Col = 297))
- iCt += 1
- Dim Cell As New Label
- With Cell
- .Name = "Cell" & iCt.ToString
- .Location = New Point(Col, Row)
- .Size = New Size(CellSz, CellSz)
- .Font = New Font("Times New Roman", 20)
- .TextAlign = ContentAlignment.MiddleCenter
- .Text = iCt.ToString
- ' AddHandler Cell.Click, AddressOf Cell_Click
- End With
- PnlCells.Controls.Add(Cell)
- TmpList.Add(Cell)
- Next
- Next
- Return TmpList
- End Function
Erläuterungen:
Bei 1 übergebe ich der Funktion (in einer .dll !) ein Panel, auf das gezeichnet werden soll.
Bei 2 erzeuge ich eine ArrayList, in der ich die zu erzeugenden Label-Referenzen speichern will.
Ab 5. und 7. zeichne ich ein 9x9 großes Label-Feld auf das übergebene Panel.
Bei 10 werden die Labels erzeugt und ihnen
im Folgenden (11-19) ein paar Eigenschaften zugewiesen.
Bei 20 werden jeweils die Labels dem Panel(-Container) und
bei 21 die Referenzen der ArrayList (die bei 24 dem aufrufenden Form zur Verfügung steht)
übergeben.
Soweit so gut, aber der Haken liegt für mich in der bei 18 auskommentierten Zeile:
Würde ich nun diese Funktion in einem Form direkt eingeben, dann tritt solange die
Fehlermeldung "Cell_Click wurde nicht deklariert" auf, wie keine (Event-)Funktion
mit dem Namen 'Cell_Click' vorliegt - also fügt man sie ein und alles ist in Ordnung!
In meinem Fall, dass sich die Funktion in einer .dll befinden soll, weiß sie ja nichts
von einer 'Cell_Click'-Funktion in dem Form!?
Wie kann man das regeln? Weiß jemand hiefür eine Lösung?
PS: Ich habe meine Frage etwas ausführlicher formuliert, da ich auf
Missverständnisse basierende Antworten vermeiden möchte.
mfG DHB
Ich meine:
Es sollten nur ernstzunehmende Beiträge eingestellt werden!
Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.
Ich meine:
Es sollten nur ernstzunehmende Beiträge eingestellt werden!
Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.