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