3

我有一个正在做的项目

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?
4

2 回答 2

2

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

var splashWindow = new SplashWindow();
splashWindow.Show();
splashWindow.SetMessage("Starting please wait...");
DoSomeWork(splashWindow);
splashWindow.Close();
于 2013-05-15T02:56:30.010 回答
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)

我希望这非常有用。

于 2021-02-15T18:37:00.430 回答