Свойство по умолчанию для пользовательского интерфейса взаимодействия с dotNet

StackOverflow https://stackoverflow.com/questions/634559

  •  10-07-2019
  •  | 
  •  

Вопрос

Мне нужно установить свойство по умолчанию для элемента управления 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 .Да.Я знаю это.Я хочу этого.Но как?

Редактировать:

Default Public Property NewProperty(ByVal foo As Integer) As String

Работает, поскольку свойство теперь отображается как свойство по умолчанию в VB6.Но это не решит мою проблему, потому что есть код, который я не могу изменить, который будет делать что-то вроде этого:

aStringVariable = myUserControlInstance

Эта статья MSDN имеет некоторую информацию по этому поводу.

Это было полезно?

Решение

потому что есть код, который я не могу изменить

Если это так, то вам нужно создать класс-оболочку вокруг исходного класса .NET и экспортировать его в качестве элемента управления, используемого VB6.Затем вы можете пометить свойство по умолчанию как использующее ключевое слово default.

Другие советы

Нет другого способа, кроме как создать оболочку в VB6, имитирующую поведение свойств VB6 по умолчанию.Мне пришлось создать несколько пользовательских элементов управления взаимодействием, и это было основной причиной, по которой нам пришлось снова обернуть элемент управления взаимодействием .Net в VB6 (чтобы избежать большого изменения кода и огромных усилий по тестированию).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top