Jag har en klass med ett par events som jag 'reser' vid ett par tillfällen. I en annan klass har jag en instans av klassen med events deklarerat så här: Det är ju inte mycket till kod men.. jag har ett exempel som inte funkar. Samma princip som där det ska användas: Har gjort lite tester och jag tror inte att du kan trigga ett event från Jag gjorde ett litet test och kan inte förstå annat än att instansen existerar vid initialize: OKEJ - RÄTTELSE.Events i klasser
Private withevents VarKlassMedEvents as KlassMedEvents
I Intialize kör jag set VarKlassmedEvents = new klassmedevents.
Subben som sedan ska köras när eventen 'reses' körs aldrig! Varför då? Är det för att jag körde set .. = new .. ? Hur ska jag annars göra för att ladda klassen?
mvh FransSv: Events i klasser
form1:
<code>
Option Explicit
Dim WithEvents vKlass1 As Class1
Private Sub Form_Load()
Set vKlass1 = New Class1 '// hur ska jag annars göra för att instansiera?
End Sub
Private Sub vKlass1_Händelse()
MsgBox "Händelsen kördes!" '//har aldrig hänt
End Sub
</code>
Class1:
<code>
Option Explicit
Public Event Händelse()
Private Sub Class_Initialize()
RaiseEvent Händelse
End Sub
</code>Sv: Events i klasser
en Class_Initialize händelse. Om du tänker efter lite......
När Class_Initialize händelsen triggas i din klass så existerar ännu inte
instansen och därför kan du inte trigga ditt event.
Läste lite i VB-hjälpen och hittade
dessutom följande text:
Important The Initialize and Terminate events should never interact with the user.
Sample Code =====================================
'Form1
Option Explicit
Private WithEvents C1 As Class1
Private Sub Form_Load()
Set C1 = New Class1
C1.raiseAnEvent
End Sub
Private Sub C1_anEvent(C As String)
Debug.Print C
End Sub
'Class1
Option Explicit
Event anEvent(C As String)
Public Sub raiseAnEvent()
RaiseEvent anEvent("raiseAnEvent")
End Sub
Private Sub Class_Initialize()
'Klassen har ännu inte instansierats och därför kan inte detta event triggas.
RaiseEvent anEvent("Class_Initialize")
End Sub
Sample Code =====================================
/peterhSv: Events i klasser
<Class1>:
Private Sub Class_Initialize()
MsgBox "Häpp!!!"
End Sub
<Form1>:
Private Sub Form_Load()
Dim obj As Class1
Set obj = New Class1
End Sub
Det här funkar precis som det borde
- HansSv: Events i klasser
Klassen finns men ännu inte för "formen" eller för referensen.
Formen känner inte till instansen när eventet skall triggas.
Därför kommer inte heller eventet att triggas.
Class_Initialize körs nämligen innan referensen till instansen
tilldelas variabeln som skall hålla referensen.
/peterh