C# 如何向 Excel VSTO 插件添加启动屏幕

问题描述 投票:0回答:1

我是编写 C# 的新手。我创建了一个 Excel VSTSO 插件。我想创建一个启动屏幕,显示我的代码在不同点的进度。我在网上搜索过,但找不到 Excel VSTO 插件的启动屏幕的任何代码示例。我在堆栈溢出上看到了这个问题:VSTO 启动屏幕或进度条,但问题中显示代码示例的链接已损坏。我还在这个网站上看到了对后台工作人员和进度条的参考,但我宁愿使用启动屏幕。谁能举个例子来说明如何做到这一点?

c# excel vsto office-addins excel-addins
1个回答
0
投票

对于 Office 加载项来说,这是一项非常简单的任务。您可以显示带有进度条的子窗口(旋转圆圈或您希望使用的任何进度指示器)。要显示子窗口并防止焦点陷入主窗口,您需要使用进度指示器为新创建的窗口设置父窗口句柄。为此,您需要创建 IWin32Window 接口的实例,它代表您的父窗口(Office 应用程序),并且可以传递给表单构造函数。它可能是这样的:

public class Win32Window : System.Windows.Forms.IWin32Window
{
    public Win32Window(int windowHandle)
    {
        _windowHandle = new IntPtr(windowHandle);
    }

    IntPtr _windowHandle;

    public IntPtr Handle
    {
        get { return _windowHandle; }
    }
}

Win32Window
类可以通过以下方式使用:

// initialize form
    var frm = new Form();
    frm.FormBorderStyle = FormBorderStyle.FixedSingle;
    frm.MinimizeBox = false;
    frm.MaximizeBox = false;
    frm.StartPosition = FormStartPosition.CenterParent;   

    // create the native window handle
    var nw = new Win32Window(Globals.ThisAddIn.Application.Hwnd);

    // show with owner
    frm.Show(nw);

您现在所需要做的就是添加进度指示器!

© www.soinside.com 2019 - 2024. All rights reserved.