【问题标题】:VSTO Powerpoint Keep loading cursor on hold while uploadingVSTO Powerpoint 上传时保持加载光标
【发布时间】:2017-06-08 16:15:48
【问题描述】:

我正在为 powerpoint 开发插件,它可以将视频导出并上传到我的服务器。上传视频时,我想在 PowerPoint 上显示等待光标。 我用过this code,效果很好。但是如果我通过这个logic code 使用计时器,就会出现光标变回默认值的问题。

var vstoPresentation = Globals.ThisAddIn.Application.ActivePresentation;
vstoPresentation.CreateVideo("path\\to\\filename.mp4");

// Set cursor as hourglass
Cursor.Current = Cursors.WaitCursor;

System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler((s, e) => {
    if (Globals.ThisAddIn.vstoPresentation.CreateVideoStatus == PowerPoint.PpMediaTaskStatus.ppMediaTaskStatusDone)
    {
        // Executing my time-intensive hashing code here...
        // uploading video to server

        // when upload finished
        // Set cursor as default arrow
        Cursor.Current = Cursors.Default;
    }
});
aTimer.Interval = 5000;
aTimer.Enabled = true;

【问题讨论】:

    标签: c# .net cursor vsto powerpoint


    【解决方案1】:

    最后,爬了很多博客和阅读官方文档我找到了我的解决方案。

    var vstoPresentation = Globals.ThisAddIn.Application.ActivePresentation;
    
    //declare a variable to check if video is uploading
    public bool videoUploading = false;
    
    //we need to register a "BeforeClose" handler 
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.PresentationBeforeClose += new EApplication_PresentationBeforeCloseEventHandler(Application_PowerPointBeforeClose);
    }
    
    internal void upload(){
        vstoPresentation.CreateVideo("path\\to\\filename.mp4");
    
        // Set cursor as hourglass
        Cursor.Current = Cursors.WaitCursor;
    
        System.Timers.Timer aTimer = new System.Timers.Timer();
        aTimer.Elapsed += new ElapsedEventHandler((s, e) => {
            if (Globals.ThisAddIn.vstoPresentation.CreateVideoStatus == PowerPoint.PpMediaTaskStatus.ppMediaTaskStatusDone)
            {
                Globals.ThisAddIn.videoUploading = true;
    
                // Executing my time-intensive hashing code here...
                // uploading video to server
    
                // when upload finished
                // Set cursor as default arrow
                Cursor.Current = Cursors.Default;
                Globals.ThisAddIn.videoUploading = false;
            }
        });
        aTimer.Interval = 5000;
        aTimer.Enabled = true;
    }
    
    private void Application_PowerPointBeforeClose(Presentation Pres, ref bool Cancel)
    {
        if (Globals.ThisAddIn.videoUploading == true)
        {
            DialogResult dialogResult = MessageBox.Show("Video upload is in progress, are you sure you want to abort?", "My Addin", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
            if (dialogResult == DialogResult.No)
            {
                Cancel = true;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多