我正在C#中创建一个小型Visual Studio 2010扩展,它使用IWpfTextViewCreationListener和TextViewCreated来捕获在VS环境中打开新TextView的时间。我遇到的问题是,此方法仅在通过VS Solution Explorer窗口打开新窗口时触发,并且在VS启动时已经包含打开的窗口并切换窗口选项卡时不会触发。我试过寻找类似TextViewChanged的东西,但找不到这样的方法。无论如何,当选择另一个选项卡窗口时,是否有捕获新的TextView?
非常感谢任何帮助。
这个问题也发布在MSDN VS Extensibility论坛上: VSX 2010 - Alternative to TextViewCreated such as (TextViewChanged)?
由于
约翰
答案 0 :(得分:1)
没有TextViewCreated,但如果您在创建时注册到IWpfTextView.GotAggregateFocus,您将获得文件之间每次切换的挂钩:
public void TextViewCreated(IWpfTextView textView)
{
textView.GotAggregateFocus += TextViewCameToFocus;
// Do stuff when a new IWpfTextView is created...
}
void TextViewCameToFocus(object sender, EventArgs e)
{
var focusedTextView = (IWpfTextView)sender;
// Do stuff when a specific IWpfTextView comes to focus...
}
如果您希望能够将触发事件与每个文本视图的逻辑链接,您可能还想跟踪IWpfTextView对象。