Ich habe eine COM-sichtbare Methode, die in etwa wie folgt aussieht: diese Methode in einer Steuerung (dh über COM) und passieren würden rufenProbleme in einem Usercontrol als Parameter in VB6 vorbei
Public Sub SomeMethod(someControl as Object)
On Error Goto ErrHandler
Dim someSpecificControl as SpecificControl
MsgBox TypeOf someControl is Control
MsgBox TypeOf someControl is SpecificControl
On Error Resume Next
Set someSpecificControl = someControl
On Error Goto ErrHandler
if someSpecificControl is Nothing then
Exit Sub
end if
' do stuff to the control
End Sub
Andere Komponenten vom Typ SpecificControl
.
Mein Problem ist, dass, wenn über den Debugger ausgeführt wird, das parametrisierte Steuerelement nicht vom richtigen Typ zu sein, d. H. Es beendet die Subroutine, nachdem das "cast" fehlschlägt, wenn ich es nicht erwartet hätte.
Mit TypeOf
habe ich überprüft, dass das parametrisierte Objekt vom Typ Control ist (wie oben), aber ich kann nicht herausfinden, warum es - scheinbar - falsch übergeben wurde. Es scheint sich korrekt zu verhalten, wenn es außerhalb des Debuggers ausgeführt wird - aber ich kann nicht sicher sein (daher diese Frage).
Kann jemand Licht darauf werfen? Könnte die Kontrolle - irgendwie - im Boxing-Unboxing-Prozess beschädigt worden sein? Gibt es einen besseren Weg, dies zu tun?
Edit: Ich habe TypeName
wie durch Kris Erickson und bekam einige interessante Ergebnisse legten nahe:
MsgBox TypeName(someControl)
MsgBox "someControl is of type SpecificControl: " & TypeOf someControl is SpecificControl
MsgBox "someControl is of type UserControl: " & TypeOf someControl is UserControl
MsgBox "someControl is of type Control: " & TypeOf someControl is Control
ich:
SpecificControl
someControl is of type SpecificControl: False
someControl is of type UserControl: False
someControl is of type Control: True
Ich denke, der einzige Weg, ich um dieses haben Begegnen zu vermeiden in einem UserControl als Parameter.
Wahrscheinlich am besten, dann versuche ich zu vermeiden, die Kontrolle als Parameter in erster Linie zu übergeben. Vielen Dank! – jpoh