VSTO启动画面或进度条

时间:2013-05-15 01:16:34

标签: c# winforms vsto splash-screen

我有一个我正在做的项目

Microsoft VSTO (office 2013 excel) 

我有一些事情会让电话花费大约10秒才能回来。

理想情况下,我想显示进度条或某些状态...经过大量搜索后,我发现了一篇标题为:

的文章

如何为VSTO应用程序创建启动画面窗口? http://www.datazx.cn/Fv7p5a/xw/oa2v/2q7xs6/mcccjfti-988m-f8r8-8d44-bstb4rfsi4xm23rsdfd.html

所以我开始在一个表单中创建这个代码,但后来我意识到我需要在我的方法中调用它并真正附加事件等...

文章说

"display a modal form on a background thread"   What is the best way to do this?

2 个答案:

答案 0 :(得分:2)

我发现在主线程上使用模态较少的形式更容易,到目前为止还没有看到模态较少的方法有任何问题。像下面的代码

var splashWindow = new SplashWindow();
splashWindow.Show();
splashWindow.SetMessage("Starting please wait...");
DoSomeWork(splashWindow);
splashWindow.Close();

答案 1 :(得分:0)

接下来您将看到我在 C# 中为 Excel-VSTO 编写启动画面的方法。我的 Excel 文件已启用宏 (.xlsm)。这些是步骤:

  1. 创建启动画面。让我们假设表单的名称是 SplashScreen。
  2. 转到对象ThisWorkbook.cs的代码
  3. 检查代码如下:
public partial class ThisWorkbook
{
    SplashScreen SC = new SplashScreen();
    private async void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {
        SC.Show();
        await Task.Delay(3500);
        SC.Close(); 
        more code...
    }
}

请注意,我在子例程中添加了 async 一词,这一点很重要。

private void ThisWorkbook_Startup(object sender, System.EventArgs e)

我希望这很有用。