VB6 アプリケーションで使用される dotNet コントロールの既定のプロパティを設定する必要があります。
<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 属性はそのトリックを行いません。
ここで、 DispId を手動でゼロに設定するとうまくいくはずだと読みました。しかし、私がこれを行うと:
<DispId(0)> Public Property NewProperty() As String
Visual Basic から、DispId Zero が DefaultProperty 用に予約されていることがわかりました。うん。そんなこと知ってる。それが欲しいです。しかし、どのように?
編集:
Default Public Property NewProperty(ByVal foo As Integer) As String
プロパティがVB6のデフォルトプロパティとして表示されるようになったため、機能します。しかし、これは私の問題を解決しません。変更できないコードがあり、次のようなことを行うからです。
aStringVariable = myUserControlInstance
この MSDN の記事には、これに関する情報が含まれています。