Мне нужно установить свойство по умолчанию элемента управления dotNet, используемого приложением VB6.
<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. Да уж. Я знаю это. Я хочу чтобы. Но как?
Edit:
Default Public Property NewProperty(ByVal foo As Integer) As String
Работает, так как свойство теперь отображается как свойство по умолчанию в VB6. Но это не решит мою проблему, потому что есть код, который я не могу изменить, который будет делать что-то вроде этого:
aStringVariable = myUserControlInstance
Эта статья MSDN содержит некоторую информацию об этом.