【问题标题】:VSTO Outlook 2013 Addin QuitVSTO Outlook 2013 插件退出
【发布时间】:2015-09-14 19:31:43
【问题描述】:

我有一个 VSTO 插件,它显示一个对话框,其中包含“是”和“否”和“取消”按钮。我希望表单在取消或单击 X 时关闭。我还希望应用程序在表单关闭时退出。这是我的代码:

        var frm = new Form1();
        DialogResult res = frm.ShowDialog();

        if (client != null)
        {
            if (res == DialogResult.Yes)
            {
                path = DRIVE_LETTER + ":/Clients/" + client + "/Correspondence/";
            }
            else if (res == DialogResult.No)
            {
                path = DRIVE_LETTER + ":/Clients Project History/" + client + "/Correspondence/";
            }
            else if (res == DialogResult.Cancel)
            {
                frm.Close();
            }
            else
            {
                frm.Close();
            }

然后是我的表单关闭事件处理程序:

    private void Form1_Closing(object sender, CancelEventArgs e)
    {
        Application.Exit();
    }

但它似乎不起作用。 Microsoft.Office.Interop.Outlook.Application 没有 Exit 方法。如何在 VSTO 中进行等效操作?当这些表单被取消/关闭时,我希望我的应用程序完全停止执行。

谢谢

编辑:任何人都可以提供退出插件的示例。或者如果满足某个条件,则停止所有执行,例如 Pyton 的 sys.exit()。我不想关闭前景,只是停止执行的插件。甚至不卸载,停止。

【问题讨论】:

    标签: c# dialog vsto outlook-addin


    【解决方案1】:

    如果您需要关闭 Outlook,您可以使用 Application 类的 Quit 方法。关联的 Outlook 会话将完全关闭;用户将从消息系统中注销,并且对尚未保存的项目所做的任何更改都将被丢弃。

    但如果您需要关闭加载项(而不是主机应用程序),您可以:

    1. 禁用所有事件处理程序和 UI 控件。要完成这项工作,您可以查看全局布尔变量,该变量可以指示加载项的状态(是否允许运行)。
    2. ComAddIn 类的Connect 属性允许设置指定COMAddIn 对象的连接状态。如果加载项处于活动状态,则该属性返回 true;如果加载项处于非活动状态,则返回 false。已注册并连接活动插件;已注册非活动加载项,但当前未连接。

      Outlook.Application outlook = new Outlook.Application();
      
      if (outlook.Application.COMAddIns.Item("OutlookAddIn").Connect)
      {
          outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = false;
      }
      else
      {
          outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = true;
      }
      

    【讨论】:

    • 原谅我的愚蠢,能否给我看一个简短的例子来说明你对数字 1 和 2 的含义?
    • 哪个是指示插件状态的布尔全局变量?
    • 你需要自己使用(自己定义)。
    • 是的,我不知道如何做到这一点,您可以给我任何示例或指南吗?我查看了您的 Connect 文档,但仍然无法弄清楚。对不起:(
    • Outlook.Application OutLook = new Outlook.Application(); if (OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect) { Outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = false; } else { Outlook.Application.COMAddIns.Item("OutlookAddIn").Connect = true; }
    猜你喜欢
    • 2016-02-09
    • 2015-02-06
    • 1970-01-01
    • 2010-12-10
    • 2019-01-21
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多