Vb.net Excel加载项-在Excel中保存windows窗体时始终可见

Vb.net Excel加载项-在Excel中保存windows窗体时始终可见,vb.net,forms,vsto,Vb.net,Forms,Vsto,首先,感谢您花时间和帮助审阅此文件 我正在尝试使用VS 2010将Excel VBA工作簿升级到VB.NET中的VSTO Excel加载项。在原始(即-VBA)版本中,我有一个无模式用户表单(称为frmMain),它浮在顶部,当用户仍在Excel应用程序中时始终可见,但如果用户移动到Excel之外的另一个窗口,则不可见 例如,在Excel中,用户可以单击任何工作表选项卡,选择任何单元格等,用户表单仍然可见。这正是我想要的 问题是,在新的VSTO加载项中,我无法让Windows窗体模拟相同的行为

首先,感谢您花时间和帮助审阅此文件

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

例如,在Excel中,用户可以单击任何工作表选项卡,选择任何单元格等,用户表单仍然可见。这正是我想要的

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

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

我可以手动使用Alt Tab键将表单恢复到视图中,但我需要它始终保持在视图中—只要用户没有离开Excel应用程序,它就可以浮动在Excel工作表的顶部

我尝试了各种方法,包括将表单设置为
TopMost
,但是,这会导致表单在任何地方都是
TopMost
,包括Excel之外。更糟糕的是,如果用户做了通常会导致Excel启动对话框的任何事情(例如关闭打开的工作簿,发出警报“是否要保存更改…”),则警报对话框本身隐藏在
frmMain
表单后面,无法访问(因为
frmMain
最上面的
表单)

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

谢谢

Rob

您应该看看哪些可以在Excel应用程序中固定或浮动。您还可以查看COM接口以获得较低级别的连接()——尽管任务窗格实际上就是这种行为的目的