我需要设置 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 零是为 DefaultProperty 保留的。是的。我知道。我要那个。但是怎么做?
编辑:
Default Public Property NewProperty(ByVal foo As Integer) As String
确实可以工作,因为该属性现在显示为 VB6 中的默认属性。但这不会解决我的问题,因为有些代码我无法更改,它会执行以下操作:
aStringVariable = myUserControlInstance
这篇 MSDN 文章有一些关于此的信息。