.net 模式打开的表单(即form.ShowDialog方法)能否侦听调用它的基础表单/加载项上的事件?

.net 模式打开的表单(即form.ShowDialog方法)能否侦听调用它的基础表单/加载项上的事件?,.net,winforms,outlook-addin,.net,Winforms,Outlook Addin,我正在使用vb.net 2010为OutLook 2007编写外接程序;外接程序将在OutlookUI中放置一个新工具栏和按钮。其中一个打开一个表单 但是,在Outlook中加载的“ThisAddin”类有一个声明为“WithEvents”的Outlook sepcific变量,例如,用于监视从Outlook文件夹中添加/删除的项目 如果使用form.show而不是form.showdialog,则可以使用ThisAddin类中发生的事件中的信息更新显示的表单,没有问题。问题只出现在打开form

我正在使用vb.net 2010为OutLook 2007编写外接程序;外接程序将在OutlookUI中放置一个新工具栏和按钮。其中一个打开一个表单

但是,在Outlook中加载的“ThisAddin”类有一个声明为“WithEvents”的Outlook sepcific变量,例如,用于监视从Outlook文件夹中添加/删除的项目

如果使用form.show而不是form.showdialog,则可以使用ThisAddin类中发生的事件中的信息更新显示的表单,没有问题。问题只出现在打开form.ShowDialog()时,在关闭表单之前,所有内容都会冻结

如果我既能让表单响应事件,又能在底层的Outlook2007UI上以模式显示表单,这将非常有帮助

提前感谢你们能够提供的任何帮助


Jim

这篇文章准确地解释了如何在与主应用程序/UI正在执行的线程不同的线程上使用ShowDialog打开模式窗体/对话框,并且仍然对该主应用程序/UI线程上的事件做出响应。

这是一种设计,通过禁用应用程序中的其他窗口,对话框变成模式对话框。我猜你真的只是在追求“最上面”的功能,但不知道。谢谢你。真的没有办法吗,比如使用不同的线程?Outlook本身仍在运行(例如,在打开模式对话框的情况下仍会收到收到的电子邮件)。如果没有,我知道我可以使用的最顶层表单属性。我真正想做的是在每个项目上显示表单(如果未打开)或更新表单(如果已打开)。ItemAdd事件,在将多个项目移动/拖放到Outlook文件夹时发生。再次感谢。