VSTO插件对话框

4
我正在为Outlook 2013的VSTO插件编写一个弹出对话框。 我在代码中测试了DialogResult.Yes和No,这两个按钮的结果都能正常工作。 但是当用户取消对话框时,我希望有另一种行为。 当他们按下取消按钮时,代码应该停止执行。 我是否可以调用某些东西来实现这一点? 如何测试取消按钮? 我尝试使用res == DialogResult.Cancel 进行测试,但它无法将结果转换为bool类型,因为我还要测试Yes和No。
我该如何确定用户是否按下了取消按钮,并如何退出插件? 在Python中,命令是sys.exit(),那么在C#中有什么等效的命令呢?
1个回答

7

如果您在插件中使用System.Windows.Forms.MessageBox类来显示对话框,则可以使用以下代码来检查所选选项:

// Display message box
DialogResult result = MessageBox.Show(messageBoxText, caption, button, icon);

// Process message box results 
switch (result)
{
    case MessageBoxResult.Yes:
        // User pressed Yes button 
        // ... 
        break;
    case MessageBoxResult.No:
        // User pressed No button 
        // ... 
        break;
    case MessageBoxResult.Cancel:
        // User pressed Cancel button 
        // ... 
        break;
 } 

请参阅MSDN中的对话框概述以获取更多信息。

如果您开发了自己的窗口,则可以为按钮的单击事件添加事件处理程序。


MessageBoxResult在哪个命名空间中?我尝试使用result = DialogResult.Cancel,但出现了“无法将DialogResult转换为布尔值”的错误。此外,它是一个带有ShowDialog()而不是MessageBox()的窗体。哦,我没有取消按钮,我想使用对话框框架右上角的X。 - ss7
1
如果您的应用程序是WinForms应用程序,请使用DialogResult。如果您的应用程序是WPF / Silverlight应用程序,请使用MessageBoxResult。命名空间不同:System.Windows.Forms(Winforms)与System.Windows(WPF)。 - Eugene Astafiev
1
Form类提供了Closing事件。 - Eugene Astafiev
1
你无法卸载代码运行的插件,但是你可以禁用所有UI控件和事件处理程序。例如,你可以设置一个全局布尔变量,在任何时候都可以检查它。此外,你可以使用COMAddIn类的Connect属性以编程方式卸载插件。 - Eugene Astafiev
1
请参见编程方式卸载Addin - Eugene Astafiev
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接