Excel AddIn - 在Excel中保持窗体始终可见

Rob*_*man 5 vb.net forms vsto

首先,感谢您在审核时的时间和帮助!...

我正在尝试使用VS 2010将Excel VBA工作簿升级到VB.NET中的VSTO Excel加载项.在原始(即 - VBA)版本中,我有一个无模式的UserForm(称为frmMain)浮动在顶部并且在用户仍然在Excel应用程序中的所有时间,但如果用户移动到Excel之外的另一个窗口,则不可见.

例如,在Excel中,用户可以单击任何工作表选项卡,选择任何单元格等,UserForm仍然可见.这正是我喜欢它的方式.

问题是,在新的VSTO加载项中,我无法让Windows窗体模仿这种相同的行为.

frmMain.Show()用来将表单显示为无模式表单,但是当用户单击Excel工作表(即激活工作表)时,表单将隐藏在工作表后面.

我可以手动Alt-Tab将表单重新放入视图中,但我需要它始终保持在视图中 - 只要用户没有离开Excel应用程序,它就会浮动在Excel工作表的顶部.

我尝试了各种各样的东西,包括将表单设置为TopMost,导致表单TopMost无处不在 - 包括Excel之外.更糟糕的是,如果用户做任何通常会导致Excel启动对话框的事情(例如 - 关闭打开的工作簿,提出警告"你想保存更改......")警告对话框本身就被隐藏了并且在frmMain表格后面不可访问(因为frmMainTopMost).

如何让我的表单以所需的方式运行(即 - 与VBA中的相同)?

谢谢!!!

Sli*_*SFT 1

您应该看看可以在 Excel 应用程序中停靠或浮动的自定义任务窗格。您还可以查看 COM 接口以获取较低级别的连接(请参阅相关的 SO 帖子) - 尽管任务窗格确实是这种类型行为的目的。