【问题标题】:Excel AddIn - Keeping windows form always visible while w/in ExcelExcel AddIn - 在 Excel 中保持 Windows 窗体始终可见
【发布时间】: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 表单后面,无法访问(因为 frmMainTopMost)。

我怎样才能让我的表单以所需的方式运行(即,与在 VBA 中的方式相同)?

谢谢!!!

罗伯

【问题讨论】:

    标签: vb.net forms vsto


    【解决方案1】:

    您应该查看Custom Task Panes,它可以停靠或浮动在 Excel 应用程序中。您还可以查看较低级别连接的 COM 接口 (see related SO Post) - 尽管 任务窗格 确实是这种行为的目的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      相关资源
      最近更新 更多