我有一个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()。我不希望Outlook关闭,只是停止执行的插件。甚至没有卸载,只是停下来。
答案 0 :(得分:2)
如果需要关闭Outlook,可以使用Application类的Quit方法。关联的Outlook会话将完全关闭;用户将从邮件系统注销,对尚未保存的项目的任何更改都将被丢弃。
但是如果您需要关闭加载项(而不是主机应用程序),您可以:
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;
}