c# - Excel-DNA——模板化的 CustomTaskPane 异常

标签 c# templates excel-dna customtaskpane

我遇到了关于 CustomTaskPaneFactory 的最奇怪的问题在Excel-DNA 0.32 .

CustomTaskPaneFactory当我使用继承自模板化任务 Pane ( MyIntCTP ) 的类 ( MyCTP<T> ) 创建任务 Pane 时抛出异常。

这是一个说明上下文的示例:

<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-DNA 在 CreateCustomTaskPane 上崩溃与以下 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)
   [...]

但是,如果父任务 Pane (MyCTP) 实现了一个接口(interface),它就可以正常工作(请注意,所有类都标记为公共(public)的):

public interface DummyInterface
{ }
public class MyCTP<T> : UserControl, DummyInterface
{ }

我不需要界面,但我想保留模板。有什么想法吗?

最佳答案

我遇到了同样的问题。

解决方案是将 com 可见性传递给 COM(Active X) 对象。

   [ComVisible(true)]
   public class MyIntCTP : MyCTP<int>
   { }

试试下面的链接,它们会给你一个概述,这会有所帮助。 https://msdn.microsoft.com/en-us/library/aa942861.aspx

查看下面给出的 git 链接以帮助项目。 https://github.com/KevinT/ExcelDna/blob/master/Distribution/Samples/CustomTaskPane.dna

关于c# - Excel-DNA——模板化的 CustomTaskPane 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28030009/

相关文章:

excel-dna - 加快Excel-DNA中xl公式插入公式的速度

c# - ExcelDNA 评估公式为自定义 UDF 返回 ExcelErrorName

c# - 不带参数的 Excel DNA 函数在 Excel 函数向导中仍显示一个参数

c# - 在读取写入的内容之前,我是否需要 'rewind' 流?

c# - 图像格式转换异常缓慢

c++ - 从类型列表到参数包

c++ - 如何编写C++模板函数在内部调用多个C函数?

c# - 名字和姓氏的数组连接

c# - KeyDown、KeyUp 和 KeyPressed 不会在托管 WPF 控件的 WinForms 应用程序上触发

c++ - 当模板化类不包含可用的成员函数时,如何在编译时验证模板参数?