2

我正在寻找一个使用 c# 调用 EnvDTE.Window 类上的 SetSelectionContainer 方法的简单示例。

我想知道应该传递给方法的类应该是什么样子。

我已经在网上搜索了几天,甚至找不到任何有帮助的东西。

Window window = _applicationObject.ItemOperations.NewFile(@"General\XML File", "", "");
TextSelection selection = (TextSelection) window.Document.Selection;
selection.SelectAll();
selection.Insert("<xml>some xml<xml>", (int)vsInsertFlags.vsInsertFlagsContainNewText);

object[] container = new[] {"Test1", "Test2"};
window.SetSelectionContainer(ref container);
4

2 回答 2

1

设置当窗口具有焦点时应传递给“属性”窗口的对象。SetSelectionContainer 仅适用于使用CreateToolWindow方法创建的窗口。其他工具窗口,例如解决方案资源管理器和任务列表,已经包含用于设置“属性”窗口中显示内容的代码。

SetSelectionContainer 允许您将对象与窗口相关联,这样只要窗口具有焦点,“属性”窗口就会显示这些对象的属性。例如,如果您有一个显示图表的自定义工具窗口,并且您希望在“属性”窗口中显示属性以更改图表的特征,则可以使用此属性。

如果 SetSelectionContainer 传递了一个空的 Variant 值,它会删除显示的对象。当工具窗口处于活动状态并且对象可从选择容器中获得时,该对象就会显示。

参考

您是否从此处下载了示例?:Visual Studio 的自动化和可扩展性

于 2011-12-14T04:21:08.943 回答
0

根据我的发现,您可以在此方法的对象数组参数中传递简单的属性,例如字符串和整数。

看来使这项工作的真正诀窍是生成属性已更改的通知(通过ITrackSelection.OnSelectChange )。

这里有一些工作代码

于 2011-12-14T04:22:15.657 回答