C# 如何使用延迟绑定破坏IDL定义的SetPlaceholder文本
我想制作office插件,它将得到任何2007+办公室的支持。为不同的办公室设置不同的加载项版本似乎是不可能的,所有办公室都从同一注册表项加载加载项信息。所以我决定使用netoffice。C# 如何使用延迟绑定破坏IDL定义的SetPlaceholder文本,c#,.net,com,ms-office,netoffice,C#,.net,Com,Ms Office,Netoffice,我想制作office插件,它将得到任何2007+办公室的支持。为不同的办公室设置不同的加载项版本似乎是不可能的,所有办公室都从同一注册表项加载加载项信息。所以我决定使用netoffice。 现在,当我使用ContentControl.SetPlaceholderText(null,null,“some text”)时,我得到DISP\u E\u TYPEMISMATCH异常。根据原因是写得不好的IDL定义:指针的整数默认值。有趣的是。 我试图传递缺少的.Value。 当我尝试使用自定义活页夹时
现在,当我使用
ContentControl.SetPlaceholderText(null,null,“some text”)
时,我得到DISP\u E\u TYPEMISMATCH
异常。根据原因是写得不好的IDL定义:指针的整数默认值。有趣的是。
我试图传递
缺少的.Value
。
当我尝试使用自定义活页夹时
contentControl.InstanceType.InvokeMember("SetPlaceholderText",
BindingFlags.InvokeMethod,
new MyBinder(),
contentControl.UnderlyingObject,
new object[] { null, null, placeholder });
MyBinder
方法从未被调用。
ContentControl
具有占位符文本
属性,该属性具有值
<代码>值是文档中的读/写属性,但在将值写入时表示为只读。
那么如何设置占位符呢?Hmm,不,不可能是这样,因为您显式指定了null,所以您不依赖于[defaultvalue]。随机猜测:回顾。@HansPassant,我能够重现这个问题,正如我所见,quirk#4在这里不适用。关键是占位符仍然可以通过VBA设置:
control.SetPlaceHolderText,“我的占位符”
,但从C#看来这是不可能的。嗯,不,不可能,因为您明确指定了null,所以您不依赖[defaultvalue]。随机猜测:回顾。@HansPassant,我能够重现这个问题,正如我所见,quirk#4在这里不适用。关键是占位符仍然可以通过VBA设置:control.SetPlaceHolderText,“我的占位符”
,但在C#中似乎不可能做到这一点。