每当通过此方法打开新窗口时,我都会收到通知:
private void OnWindowActivated(EnvDTE.Window GotFocus, EnvDTE.Window LostFocus)
我现在要做的是在对象IVsDropdownBar
中获取所选方法,无论何时更改。
那么如何获得对这个对象的引用呢?
答案 0 :(得分:3)
我没试过,所以这个答案只是一个想法......
根据MSDN,您可以通过IVsDropdownBar
服务获取IVsDropdownBarManager
个实例; GetDropdownBar
方法返回与代码窗口关联的下拉栏(可能是没有下拉栏的情况,因为此装置是特定于语言服务的,可以通过选项转换)。
文档说明可以从IVsDropdownBarManager
获取IVsCodeWindow
;我想你可以从活动文档窗口中获取这样的实例,不知怎的......
获得IVsDropdownBar
对象后,GetClient
和GetCurrentSelection
方法可能符合您的利益; GetCurrentSelection
允许您查询某个下拉列表的选择;例如......
IVsDropdownBar bar;
int hr = manager.GetDropdownBar(out bar);
if (hr == VSConstants.S_OK && bar != null)
{
IVsDropdownBarClient barClient;
hr = bar.GetClient(out barClient);
if (hr == VSConstants.S_OK && barClient != null)
{
// const int TypesDropdown = 0;
const int MembersDropdown = 1;
int curSelection;
hr = bar.GetCurrentSelection(MembersDropdown, out curSelection);
if (hr == VSConstants.S_OK && curSelection >= 0)
{
hr = barClient.GetEntryText(MembersDropdown, curSelection, out text);
if (hr == VSConstants.S_OK)
{
...
}
}
}
}
不确定,如果获得的信息有用...... 文档说明,它可以是
[...]简单或花哨的文本[...]和下拉代码没有假设它们的语义。