65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Visual Studio 2005 创建工具窗口加载项

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.79/5 (15投票s)

2007 年 1 月 16 日

CPOL

3分钟阅读

viewsIcon

65238

downloadIcon

639

展示如何使用 Visual Studio 2005 创建工具窗口插件。

Sample Image - vstoolwindow.jpg

引言

本文旨在展示如何创建 Visual Studio .NET 2005 插件。此插件将包含一个 ToolWindow,以及“视图”菜单下的一个菜单项来显示该 ToolWindow。如果窗口被关闭,可以使用菜单项再次显示它。

创建项目

首先,创建一个新的 Extensibility 项目,类型为 Visual Studio 插件。这将显示向导来指导您完成项目创建。在向导中,您需要选择以下选项

  • 编程语言:C#

将创建一个工具菜单项。只有当用户在“插件管理器”对话框中选中“加载”复选框时,插件才会加载。

向导的主要页面是第 4 页,您可以在其中选择创建工具菜单项。

添加工具窗口控件

工具窗口是托管在 ActiveX 容器中的用户控件,因此请继续向项目添加新的用户控件。我的控件名为 ToolWindowControl,并且上面有一个按钮。您可以使您的控件尽可能复杂;但是,请记住它占用的实际空间。

要使用您的控件访问 IDE 的“对象”,请在控件上创建一个类型为 EnvDTE80.DTE2 的私有字段,名为 applicationObject。然后,为此字段创建一个 get/set 属性;最快的方法是右键单击该字段,在“重构”菜单下,单击“封装字段”,然后单击“确定”。当窗口初始化时,您将设置此属性。

修改插件以用于工具窗口

IDE 中的几乎每个其他工具窗口都是通过“视图”菜单打开的。向导生成的代码将在“工具”菜单上为我们放置一个项目,我们需要更改其位置。在Connect.cs中,您将找到创建菜单项并处理它的代码。

OnConnection 方法包含生成菜单项的代码。要将其移动到“视图”菜单,只需遍历此方法并将找到的任何“工具”替换为“视图”。所有重要的匹配项应该都在第一个 try/catch 块中。您的代码应该最终像这样

try
{
    ResourceManager resourceManager = 
        new ResourceManager("ToolWindowArticle.CommandBar", 
        Assembly.GetExecutingAssembly());
    CultureInfo cultureInfo = new 
        System.Globalization.CultureInfo(_applicationObject.LocaleID);
    string resourceName = String.Concat(cultureInfo.TwoLetterISOLanguageName, 
                                        "View");
    toolsMenuName = resourceManager.GetString(resourceName);
}
catch
{
    toolsMenuName = "View";
}

我删除了向导生成的注释,以保持代码简短。

接下来,应该在该类中创建两个 private 字段来保存窗口和控件。我的代码如下

private Window toolWindow;
private ToolWindowControl toolWindowControl;

由于工具窗口直到 IDE 加载后才会创建,因此代码不应与菜单项生成位于同一代码段中。在 OnConnect 方法的末尾,添加一个 else if 语句,条件为:connectMode == ext_ConnectMode.ext_cm_AfterStartup。此条件确保代码仅在启动后执行。如果您复制并粘贴以下代码,您将需要更新它以包含您的变量和一个新的 GUID。此代码创建窗口并在控件上设置 ApplicationObject 属性。

else if (connectMode == ext_ConnectMode.ext_cm_AfterStartup)
{
    #region Load Tool Window
    object programmableObject = null;
    string guidString = "{9FFC9D9B-1F39-4763-A2AF-66AED06C799E}";
    Windows2 windows2 = (Windows2)_applicationObject.Windows;
    Assembly asm = Assembly.GetExecutingAssembly();
    toolWindow = windows2.CreateToolWindow2(_addInInstance, asm.Location, 
        "ToolWindowArticle.ToolWindowControl", 
        "Pirate Window", guidString, ref programmableObject);
    toolWindow.Visible = true;
    toolWindowControl = (ToolWindowControl)toolWindow.Object;
    toolWindowControl.ApplicationObject = _applicationObject;
    #endregion
}

使菜单项显示 ToolWindow

加载插件时将显示窗口;但是,关闭窗口后无法重新显示该窗口。第一次单击菜单项会加载插件;但是,进一步单击不会使其再次显示。快速添加到 Exec 方法将使其在每次单击菜单项时再次显示。在 commandNameif 语句下,添加以下内容。

toolWindow.Visible = true;

结论

本文希望能帮助您创建一个 Visual Studio 插件,该插件可以显示能够与 IDE 交互的 ToolWindow。您创建的“视图”菜单项应在关闭窗口后重新显示它。

历史

  • 2007 年 2 月 17 日 - 第一版。
© . All rights reserved.