C # COM, свойство по умолчанию выбрасывает ошибку №.438 - PullRequest
0 голосов
/ 10 октября 2018

Я пишу элемент управления ActiveX COM в C #.В этом элементе управления есть свойство «Значение», которое я пытаюсь выставить как свойство по умолчанию.

Вот определение Typelib:

[id(0x00000002), propget, bindable, requestedit, displaybind, defaultbind, helpstring("Returns/sets the current date.")]
HRESULT Value([out, retval] VARIANT* pRetVal);

[id(0x00000002), propput, bindable, requestedit, displaybind, defaultbind, helpstring("Returns/sets the current date.")]
HRESULT Value([in] VARIANT pRetVal);

Реализация свойства проста:

public object Value
        {
            get { return BaseControl.Value.Date; }
            set
            {
               DateTime dt;              
                //BaseControl is a DateTimePicker control.
               BaseControl.Value = DateTime.TryParse((value ?? "").ToString(), out dt) ? dt : DateTime.Today;
            }
        }

При использовании этого элемента управления в VBA я могу установить \ ПолучитьValue свойство, подобное этому

Private Sub Test()
    Me.DTPicker1.Value = Date - 5
End Sub

Но когда я пытаюсь использовать версию по умолчанию,

Private Sub Test2()
    '/Default property access
    Me.DTPicker1 = Date - 5
End Sub

Выдает ошибку,

438: Объект не поддерживает это свойство или метод.

Есть идеи, почему не работает режим по умолчанию?

...