我遇到了最奇怪的问题CustomTaskPaneFactory
in Excel-DNA 0.32
。
CustomTaskPaneFactory
MyIntCTP
当我创建具有从模板化任务窗格 ( ) 继承的类 ( ) 的任务窗格时引发异常MyCTP<T>
。
这是一个说明上下文的示例:
<DnaLibrary RuntimeVersion="v4.0" Language="CS">
<Reference Path="System.Windows.Forms.dll" />
<![CDATA[
using ExcelDna.Integration;
using ExcelDna.Integration.CustomUI;
using System.Windows.Forms;
internal class ThisAddIn : IExcelAddIn
{
public void AutoOpen()
{
var p = CustomTaskPaneFactory.CreateCustomTaskPane(typeof(MyIntCTP), "o");
p.Visible = true;
}
public void AutoClose()
{ }
}
public class MyCTP<T> : UserControl
{ }
public class MyIntCTP : MyCTP<int>
{ }
]]>
</DnaLibrary>
上面的代码不起作用。Excel-DNACreateCustomTaskPane
在以下情况下崩溃System.Runtime.InteropServices.COMException
:
Unable to create specified ActiveX control
at ExcelDna.Integration.CustomUI.ICTPFactory.CreateCTP(String CTPAxID, String CTPTitle, Object CTPParentWindow)
at ExcelDna.Integration.CustomUI.CustomTaskPaneFactory.CreateCustomTaskPane(String controlProgId, String title, Object parent)
at ExcelDna.Integration.CustomUI.CustomTaskPaneFactory.CreateCustomTaskPane(Type userControlType, String title, Object parent)
at ExcelDna.Integration.CustomUI.CustomTaskPaneFactory.CreateCustomTaskPane(Type userControlType, String title)
[...]
但是,如果父任务窗格 ( MyCTP
) 实现了一个接口,则它确实有效,因此(请注意,所有类都标记为公共):
public interface DummyInterface
{ }
public class MyCTP<T> : UserControl, DummyInterface
{ }
我不需要界面,但我想保留模板。有任何想法吗?