【问题标题】:VSTO splash screen or progress barVSTO 闪屏或进度条
【发布时间】:2013-05-15 01:16:33
【问题描述】:

我有一个正在做的项目

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?

【问题讨论】:

    标签: c# winforms vsto splash-screen


    【解决方案1】:

    接下来您将看到我在 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)
    

    我希望这很有用。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你有机会给我看一下快速的sn-p代码吗?根据那篇文章,我想有一个像 public partial class SplashScreen : Form 这样的表单,但是我怎样才能用 excel 引发事件是在一个“忙”的方法中,从而调用这个表单等等......?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多