| 

.NET C# Java Javascript Exception

2
Hallo Zusammen,
Recherchiere zu dem Thema schon einige Zeit und finde nichts dazu. Hoffentlich hier...

Ich muss per später Bindung beliebige COMControls auf einer Form plazieren. Diese COMControls sollen auf MouseClick und MouseMove reagieren. Bei früher Bindung kein Problem, aber bei später Bindung hat das neu erzeugte Objekt die Ereignisse nicht. ich finde auch keinen Weg diese irgendwie hinzuzufügen.

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

dim obj as new object
obj=CreateObject("irgendeinCOMSteuerelement")'zb. "MSComCtl2.DTPicker"

'hier krachts
AddHandler obj.MouseDown, AddressOf meClicked
AddHandler obj.MouseMove, AddressOf memousemoveOver

me.Controls.Add(obj)

end sub
End Class


Hat jemand eine Idee?
Danke, Daniel
News:
12.05.2011
schlumpfger 288 1 8
5 Antworten
0
Ich habe den Code nicht getestet, aber das könnte mit WithEvents gehen:

Public Class Form1

Private WithEvents obj As Control

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
obj = CreateObject("MSComCtl2.DTPicker")
End Sub

Private Sub obj_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles obj.MouseClick

End Sub
End Class


Wie gesagt, ob das mit "Private WithEvents obj As Control" wirklich funktioniert kann ich nicht garantieren.
12.05.2011
Martin Fuchs 1,4k 1 9
0
Das ist das Problem mit den COMObjekten.

Ich bekomme folgende Meldung bei:

obj = CreateObject("MSComCtl2.DTPicker")

Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Klassentyp "System.Windows.Forms.Control" umgewandelt werden. Instanzen von Typen, die COM-Komponenten repräsentieren, können nicht in andere Typen umgewandelt werden, die keine COM-Komponenten repräsentieren. Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.

Verstehe aber den letzten Satz nicht...

Eine Umwandlung in Schnittstellen ist jedoch möglich, sofern die zugrunde liegende COM-Komponente QueryInterface-Aufrufe für die IID der Schnittstelle unterstützt.

Hatte auch schon mit CTYPE probiert. Immer die gleiche Meldung. Und dem Typ Object bekomme ich keine Events zugewiesen, bzw. weiß nicht wie.
13.05.2011
schlumpfger 288 1 8
0
Hast Du es mal mit früher Bindung versucht? Also direkt einen Verweis erstellen. Da könnte man erst mal feststellen, auf welchem Typ das Objekt wirklich basiert. Wenn das funktioniert, dann das gleiche mit später Bindung testen...
13.05.2011
traudi 231 1 5
0
Ja, habe ich schon probiert.
Der Typ ist in dem oben gegebenen Beispiel ein MSComCtl2.DTPicker . Mit früher Bindung kann man in der Syntax auch Eventhandler zuweisen, da das Object die entsprechenden Events auch hat. Aber mit später Bindung sind diese Events nicht bekannt...
13.05.2011
schlumpfger 288 1 8
0
Hat keiner mehr eine Idee?
18.05.2011
schlumpfger 288 1 8

Stelle deine Binding-Frage jetzt!