VB6 응용 프로그램에서 사용하는 dotNet 컨트롤의 기본 속성을 설정해야합니다.dotNet Interop Usercontrol의 기본 속성
<ComClass(myControl.ClassId, myControl.InterfaceId, myControl.EventsId)> _
<DefaultProperty("NewProperty")> _
Public Class myControl
Public Const ClassId As String = "86252de2-ca87-4468-adbe-ad7c47747759"
Public Const InterfaceId As String = "c1cbf1a1-24bb-46c3-88a4-813eb4917845"
Public Const EventsId As String = "954ed890-011c-4908-ab33-610159fe6eb1"
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property
End Class
DefualtProperty 속성은 트릭을 수행하지 않습니다.
나는 here으로 수동으로 DispId를 0으로 설정하면 트릭을 수행해야한다고 읽었습니다. 하지만 이렇게하면 :
<DispId(0)> Public Property NewProperty() As String
DispId Zero가 DefaultProperty 용으로 예약되었음을 Visual Basic에서 친절하게 알려줍니다. 네. 나는 그것을 안다. 나는 것을 원하는. 그러나 어떻게?
편집 :
Default Public Property NewProperty(ByVal foo As Integer) As String
이 속성으로 작업을 지금 VB6의 기본 속성으로 나타 않습니다.
aStringVariable = myUserControlInstance
This MSDN article이에 대한 몇 가지 정보를 가지고 : 나는 같은 것을 할 것이다, 변경할 수있는 코드가 있기 때문에 그러나 이것은 내 문제가 해결되지 않습니다.
래퍼가 VB6 사용자 컨트롤이 되었습니까? 또는 dotNet 측에서 마술을 할 수 있습니까? – dummy
선택 사항. 래퍼는 기본 속성이 원하는 방식으로 작동한다는 점을 제외하고는 원래 컨트롤을 거의 복제합니다. 매개 변수없이 기본 속성을 사용하려면 vb6 사용자 정의 컨트롤을 사용해야합니다. –
통찰력을 가져 주셔서 감사합니다. 아무도 대답하지 않으면 나는이 답을 며칠 안에 받아 들일 것이다. – dummy