繁体   English   中英

在显示ProgressBar时将MailItem设置为只读(VSTO的Outlook加载项)

[英]Set MailItem readonly while a ProgressBar is shown (Outlook Add-In by VSTO)

我正在使用VSTO在C#中为Outlook创建外接程序。

在发送MailItem之前,将在send-event中完成一些特殊任务。 完成此任务后,将显示带有进度条的模式表格。 很好 但是,尽管显示了进度条,但用户无法与Outlook进行交互。 整个Outlook被冻结。 ->我希望用户在要发送的MailItem上完成任务时可以与Outlook进行交互。

因此,我为特殊任务创建了一个新线程,包括显示进度条。 在发送事件中将执行以下步骤:

检查bool变量是否已完成任务。

  1. 如果尚未完成任务,则将取消发送,并且将为任务创建并启动新线程。
  2. 任务完成后,将bool变量设置为true(=任务已完成)。
  3. Mailitem的发送方法也将被调用。

这也很好。 但是,带有进度条的模式形式不再是模式形式的。用户可以与Outlook交互(很好!)。 但是他也可以在任务运行且进度条显示时与MailItem交互(不好!)...

所以问题是,如何阻止MailItem,将其设置为只读或其他方式以避免用户在显示进度栏时修改MailItem?

您只需要为ShowDialog方法指定(打开的检查器窗口的)父窗口句柄即可。 在这种情况下,除非进度条被隐藏,否则用户将无法与打开的电子邮件进行交互。

可以将Inspector窗口的实例强制转换为IOleWindow接口,从中可以获取窗口句柄。 有关更多信息,请参见IOleWindow :: GetWindow方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM