我正在用VSTO为C#中的Outlook创建一个外接程序。
在发送MailItem之前,将在发送事件中执行一些特殊任务。在完成此任务时,将显示带有进度条的模态表单。效果很好。但是,当显示进度栏时,用户无法与Outlook交互。整个Outlook被冻结了。->我希望用户可以在MailItem上完成要发送的任务时与MailItem交互。
因此,我为特殊任务创建了一个新线程,包括显示进度条。在发送事件中将执行以下步骤:
如果任务已经完成,请检查bool变量。
这也很好。但是带进度条的模态形式不再是模态了。用户可以与Outlook交互(很好!)。但他也可以在任务运行和进度条显示时与MailItem交互(不太好!)
因此,问题是,我如何阻止MailItem,将其设置为只读或不同的东西,以避免用户在显示进度条的同时修改MailItem?
发布于 2015-11-16 13:03:19
您只需要为ShowDialog方法指定父窗口句柄(打开的检查窗口)。在这种情况下,用户将无法与打开的电子邮件交互,直到进度条被隐藏。
可以将检查器窗口的一个实例转换到IOleWindow接口,在该接口中您可以获得窗口句柄。有关更多信息,请参见IOleWindow::GetWindow方法。
https://stackoverflow.com/questions/33735441
复制相似问题