C#COM,默认属性抛出错误号。 438

时间:2018-10-09 23:58:41

标签: c# vba com activex typelib

我正在用C#编写ActiveX COM控件。在此控件中,我有一个名为“值”的属性,我试图将其公开为默认属性。

这是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);

Property实现很简单:

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:对象不支持此属性或方法。

任何想法,为什么默认模式不起作用?

0 个答案:

没有答案