Excel SDI:使模态表单应用程序处于最顶层

Excel SDI:使模态表单应用程序处于最顶层,excel,winforms,modal-dialog,excel-2013,sdi,Excel,Winforms,Modal Dialog,Excel 2013,Sdi,在用C编写的VSTO插件中,我使用form.ShowDialog()显示一个模态形式。 此模式表单的所有者是(在Excel 2013中)当前活动的工作簿窗口 现在的问题是: 1) 使用Ctrl+N打开第二个工作簿 2) 显示模态形式 3) 现在您可以使用windows任务栏更改活动工作表 结果:无法在此工作簿窗口中执行任何操作 问题:我如何实现像标准MessageBox这样的行为?我不会让我的用户激活它的父窗口以外的其他窗口。 附言:当然我不想设置form.TopMost=true因为它不应该出

在用C编写的VSTO插件中,我使用
form.ShowDialog()显示一个模态形式。
此模式表单的所有者是(在Excel 2013中)当前活动的工作簿窗口

现在的问题是: 1) 使用Ctrl+N打开第二个工作簿 2) 显示模态形式 3) 现在您可以使用windows任务栏更改活动工作表

结果:无法在此工作簿窗口中执行任何操作

问题:我如何实现像标准MessageBox这样的行为?我不会让我的用户激活它的父窗口以外的其他窗口。


附言:当然我不想设置
form.TopMost=true因为它不应该出现在其他应用程序前面。

你有没有想过这个问题?我也遇到了同样的问题。我想我在打开表单后监视了Active工作簿:如果用户更改为其他工作簿,我会将其更改回模式表单的所有者。