【发布时间】:2012-02-29 20:48:23
【问题描述】:
首先,感谢您抽出宝贵时间和协助审核此内容!...
我正在尝试使用 VS 2010 将 Excel VBA 工作簿升级为 VB.NET 中的 VSTO Excel 加载项。在原始(即 VBA)版本中,我有一个浮动的无模式用户窗体(称为 frmMain)在顶部,并且当用户仍在 Excel 应用程序中时始终可见,但如果用户移动到 Excel 之外的另一个窗口,则不可见。
例如,在 Excel 中,用户可以单击任何工作表选项卡、选择任何单元格等,用户窗体仍然可见。这正是我想要的。
问题是,在新的 VSTO 加载项中,我无法让 Windows 窗体模仿同样的行为。
我使用frmMain.Show() 将表单显示为无模式表单,但当用户单击 Excel 工作表(即激活工作表)时,该表单将隐藏在工作表后面。 p>
我可以手动 Alt-Tab 将表单重新显示在视图中,但我需要它始终保持在视图中 - 只要用户没有离开 Excel 应用程序,它就会浮动在 Excel 工作表的顶部。
我尝试了各种方法,包括将表单设置为 TopMost,但是,这会导致表单在任何地方都是 TopMost - 包括 Excel 之外。更糟糕的是,如果用户执行任何通常会导致 Excel 启动对话框的操作(例如 - 关闭打开的工作簿,发出警报“您要保存更改...”)警告对话框本身隐藏在 frmMain 表单后面,无法访问(因为 frmMain 是 TopMost)。
我怎样才能让我的表单以所需的方式运行(即,与在 VBA 中的方式相同)?
谢谢!!!
罗伯
【问题讨论】: