1

我一直在 Windows 7 上的 Visual Studio 2010 pro 中使用 .Net 4.0 试用 ILNumerics 3.2.1.0 的社区版本,并通过文档我成功地获得了一个 Windows 窗体项目来显示图表,使用下面的代码。

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void ilPanel1_Load(object sender, EventArgs e)
    {
        ILSurface mySurface = new ILSurface(ILSpecialData.sincf(100, 200));
        ILPlotCube myCube = new ILPlotCube(twoDMode: false);
        myCube.Add(mySurface);
        ilPanel1.Scene.Add(myCube);
    }
}

如果我尝试完全相同的代码,但从 VSTO Excel 2010 应用程序内部,则表单中显示的所有内容都是 ILPanel 的设计器视图,白色背景上的蓝色圆圈。我没有收到任何错误消息。我错过了一些明显的东西吗?或者有没有人有如何让图表在 VSTO 中显示的解决方案?

更新

感谢 Philliproso 指出 IsDesignMode() 方法。正如在各个地方指出的那样,包括这个问题,Detecting design mode from a Control's constructor,以下方法并不理想,但对我来说,它提供了一个快速修复,让我可以评估 ILNumerics。

 public static bool IsDesignMode() {
        if (System.Windows.Forms.Application.ExecutablePath.IndexOf("devenv.exe", StringComparison.OrdinalIgnoreCase) > -1)
        {
            return true;
        }
        return false;
}
4

1 回答 1

1

这与此处的问题相同:

当加载到matlab in-a-winform-into-a-dll-when-loa 时,Ilnumerics Ilpanel 在 winform 中编译为 dll 时未激活

使用 VSTO 作为 ILNumerics 的主机让面板假设它是在设计器中加载的。我们目前正在收集可能的解决方法和解决方案。一种解决方案可能是在 ILNumerics 的设置中引入一个标志:

Hosted [default: false]

您的情况需要启用该标志。在托管模式下,可以在运行时检查常见设计者的黑名单,并将其与当前条目程序集进行比较。还有其他建议吗?

于 2013-07-24T11:40:24.060 回答