首页 > 解决方案 > 如何在 VSTO 中打开部分模态表单?

问题描述

我想在 VSTO 中打开一个表单,通过它我应该仍然能够选择 Excel 单元格,但不能访问任何菜单或创建新工作表。

我现在有下面的代码,但是这个,我仍然可以点击菜单按钮。我不想从代码中禁用每个菜单按钮

Form1 frm = new Form1();
frm.Show(new WindowFormsWrapper(new IntPtr(Globals.ThisAddIn.Application.Windows[1].Hwnd)));

标签: c#vsto

解决方案


Word 具有一项保护功能,仅允许您进行某些修改,例如文档内容或样式。Excel 似乎也有它,但我的代理不允许我打开该页面,所以我不知道它做什么和不允许做什么。如果这还不够接近,那么您可能就不走运了,因为 Office 并不是真正设计用于以这种方式使用的。

此外,仅供参考,您不应从非模态对话框访问 VSTO API。VSTO 中的多线程通常充满危险。

您可以考虑改用任务窗格。假设您没有在其中创建自己的线程,这里就不会有线程问题。


推荐阅读