正如罗伯特指出,在没有ActivePane约翰的代码会抛出异常。如果有活动窗格,它将使用任何一个窗格处于活动状态。
我对Robert的例子有一个问题,取决于你创建窗格的位置,在我的情况下,这是Exec方法,它将在每次运行时创建具有相同名称的多个窗格。
包括我的例子,我如何解决这个问题。很简单,只需检查窗口是否存在...
Window window = _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput);
OutputWindow outputWindow = (OutputWindow)window.Object;
OutputWindowPane outputWindowPane = null;
for (uint i = 1; i <= outputWindow.OutputWindowPanes.Count; i++)
{
if (outputWindow.OutputWindowPanes.Item(i).Name.Equals(OUTPUT_WINDOW_NAME , StringComparison.CurrentCultureIgnoreCase))
{
outputWindowPane = outputWindow.OutputWindowPanes.Item(i);
break;
}
}
if (outputWindowPane == null)
outputWindowPane = outputWindow.OutputWindowPanes.Add(OUTPUT_WINDOW_NAME);
outputWindowPane.OutputString("Message");
什么是对象dte? (现在阅读文档,但是在将来参考的答案中会很好) –
对于那些关注的人,dte在connect.cs中的connect方法中定义。在文件的底部寻找它:private DTE2 _applicationObject;用它作为dte –
这对我有用:) – Achilles