gpt4 book ai didi

c# - 在自己的 Visual Studio 扩展中失去窗口焦点(使用 EnvDTE)

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:21 29 4
gpt4 key购买 nike

我正在为 Visual Studio 2013 编写 C# 文档大纲扩展。

想法是有一个大纲窗口,如果用户单击大纲元素,光标会跳转到代码文档中的链接位置。我正在使用 EnvDTE.Document 类来实现这一点:

DTE2 dte = GetService(typeof(DTE)) as DTE2;
var currentDocument = dte.ActiveDocument;

currentDocument.Activate();

var selection = (EnvDTE.TextSelection) CurrentDocument.Selection;
selection.MoveToLineAndOffset(line, offset);

我在 OnMouseDoubleClick 事件处理程序中执行激活和选择更改。

问题是,起初焦点会按预期更改,但我的工具窗口会恢复焦点。如何防止焦点返回到我的工具窗口?

最佳答案

找到解决方案!

实际问题:

问题是由 TreeView 气泡行为引起的。 IE。即使您处理 MouseDoubleClick 事件,它也会向上冒泡直到树根元素。我的第一级 TreeViewItem 没有连接我的 OnMousDoubleClick 事件处理程序。因此,一旦事件泡沫到达他们,他们就重新获得了焦点。

解决方案:

OnMousDoubleClick 处理程序连接到树中的 all TreeViewItem 元素并让它们调用

currentDocument.Activate();

总是在事件处理程序的开头。

关于c# - 在自己的 Visual Studio 扩展中失去窗口焦点(使用 EnvDTE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548151/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com