Porady: tworzenie i kontrolowanie okien narzędzi

Dodatki programu Visual Studio nie są już obsługiwane w programie Visual Studio 2013.Należy wykonać uaktualnienie dodatków do rozszerzeń VSPackage.Aby uzyskać więcej informacji dotyczących uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.

Okna w programie Visual Studio należą do jednej z dwóch kategorii: okna dokumentu lub okna narzędzi.Okno dokumentu to takie, którego zawartość można edytować w edytorze kodu, np. plik tekstowy, HTML lub kod wewnątrz klasy.Okno narzędzia zawiera jedną lub więcej kontrolek, takich jak przyciski, pola tekstowe, pola kombi itd.W zintegrowanym środowisku programistycznym (IDE) programu Visual Studio przy użyciu kontrolek można wykonywać zadania takie jak konfigurowanie opcji, sprawdzanie błędów czy modyfikowanie elementów projektu.Przykłady takich okien to Dane wyjściowe, Lista zadań i Przybornik.Okno Przybornik można swobodnie przenosić w granicach okna środowiska IDE lub dokować razem z innymi oknami narzędzi. Dodatkowo kolekcja LinkedWindows umożliwia programistyczne łączenie i rozłączanie okien narzędzi w środowisku IDE.Aby uzyskać więcej informacji, zobacz Porady: zmienianie charakterystyki okna.

Poza zautomatyzowanym operowaniem istniejącymi oknami narzędzi można także tworzyć własne niestandardowe okna narzędzi. Służy do tego metoda CreateToolWindow2 w kolekcji Windows2.

Tworzone własne okno narzędzi można wypełnić kontrolkami przydatnymi do wykonywania określonych zadań.Okno takie może na przykład służyć do wyświetlania specjalistycznych narzędzi ułatwiających formatowanie kodu, śledzenia i modyfikowania ustawień zmiennych, wykonywania zaawansowanych zadań debugowania i profilowania źródła.

Procedura tworzenia niestandardowego okna narzędzi:

  • Tworzenie kontrolki użytkownika (przy użyciu projektu wykorzystującego bibliotekę kontrolek systemu Windows).

  • Dodanie wybranych kontrolek do formularza (przycisków, pól tekstowych itd.) oraz kodu.

  • Skompilowanie projektu do biblioteki DLL.

  • Utworzenie nowego projektu dodatku programu Visual Studio (lub innego projektu, np. aplikacji systemu Windows).

  • Utworzenie za pomocą metody CreateToolWindow2 okna narzędzia do umieszczenia nowej kontrolki użytkownika.

Przed wywołaniem metody CreateToolWindow2 w celu utworzenia nowego okna narzędzia należy przenieść kontrolkę użytkownika (ControlObject) do tego samego zestawu co dodatek lub skonfigurować wszystkie atrybuty w kontrolce użytkownika, tak aby była całkowicie widoczna dla modelu COM.(Np. zaznaczając w ustawieniach kompilacji projektu opcję Zarejestruj dla współdziałania z modelem COM). W razie niewykonania tego kroku kontrolka nie zostanie poprawnie sformowana i metoda CreateToolWindow2 zwróci wartość null.

Oprócz poniższych przykładach dodatkowe narzędzie przykłady okna dla każdego języka, a także innych przykładów kodu, znajdują się na przykłady automatyzacji dla programu Visual Studio witryny sieci Web.

[!UWAGA]

Próba skonfigurowania któregokolwiek stanu widoczności nowego okna narzędzi, np. wysokości, szerokości lub pozycji, zanim okno stanie się widoczne, spowoduje wygenerowanie błędu.Przed ustawieniem tych właściwości należy się upewnić, że okno jest wyświetlane.

[!UWAGA]

Okna dialogowe i polecenia menu mogą się różnić od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Poniższe procedury opracowano ogólnych ustawień projektowych aktywne.To change your settings, choose Import and ExportSettings on the Tools menu.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.

Tworzenie niestandardowego okna narzędzi

Poniższy przykład ilustruje sposób tworzenia okna narzędzi w programach Visual Basic i Visual C#.

[!UWAGA]

Poniższy kod musi zostać wykonany w dodatku, a nie w makrze.

Aby utworzyć niestandardowe okno narzędzi

  • Utwórz kontrolkę użytkownika w projekcie wykorzystującym bibliotekę kontrolek systemu Windows.Zaakceptuj domyślną nazwę „WindowsControlLibrary1” lub zmień nazwę parametru asmPath w kodzie poniżej na taką samą jak nazwa odpowiedniego projektu w bibliotece kontrolek systemu Windows.

    Alternatywnie w kodzie można utworzyć odwołanie do istniejącej kontrolki użytkownika.

[!UWAGA]

W definicji klasy kontrolki użytkownika musi być dołączony atrybut GuidAttribute.

  1. Utwórz nowy projekt dodatku.

    Aby uzyskać informacje, zobacz Porady: tworzenie dodatku.

  2. Zastąp metodę OnConnection dodatku poniższym kodem:

    Public Sub OnConnection(ByVal application As Object, ByVal _
    connectMode As ext_ConnectMode, ByVal addInInst As Object, _
    ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        Try
            ' ctlProgID - the ProgID for your user control.
            ' asmPath - the path to your user control DLL.
            ' guidStr - a unique GUID for the user control.
            Dim ctlProgID, asmPath, guidStr As String
            ' Variables for the new tool window that will hold
            ' your user control.
            Dim toolWins As EnvDTE80.Windows2
            Dim toolWin As EnvDTE.Window
            Dim objTemp As Object = Nothing
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
            ctlProgID = "WindowsControlLibrary2.UserControl1"
            ' Replace the <Path to VS Project> with the path to
            ' the folder where you created the WindowsCotrolLibrary.
            ' Remove the line returns from the path before 
            ' running the add-in.
            asmPath = "<Path to VS Project>\My _
              Documents\Visual Studio 2013\Projects\ _
              WindowsControlLibrary2\WindowsControlLibrary2\_
              bin\Debug\WindowsControlLibrary2.dll"
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}"
    
            toolWins = CType(_applicationObject.Windows, Windows2)
            ' Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, _
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, objTemp)
            ' The tool window must be visible before you do anything 
            ' with it, or you will get an error.
            If Not toolWin Is Nothing Then
                toolWin.Visible = True
            End If
               ' Uncomment the code below to set the new tool window's
               ' height and width, and to close it.
            ' MsgBox("Setting the height to 500 and width to 400...")
            ' toolWin.Height = 500
            ' toolWin.Width = 400
            ' MsgBox("Closing the tool window...")
            ' toolWin.Close(vsSaveChanges.vsSaveChangesNo)
    
        Catch ex As Exception
            MsgBox("Exception: " & ex.ToString)
        End Try
    End Sub
    
    // Before running, add a reference to System.Windows.Forms, 
    // using System.Windows.Forms, to the top of the class.
    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        try
        {
            // ctlProgID - the ProgID for your user control.
            // asmPath - the path to your user control DLL.
            // guidStr - a unique GUID for the user control.
            string ctlProgID, asmPath, guidStr;
            // Variables for the new tool window that will hold
            // your user control.
            EnvDTE80.Windows2 toolWins;
            EnvDTE.Window toolWin;
            object objTemp = null;
    
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            ctlProgID = "WindowsControlLibrary2.UserControl1";
            // Replace the <Path to VS Project> with the path to
            // the folder where you created the WindowsCotrolLibrary.
            // Remove the line returns from the path before 
            // running the add-in.
            asmPath = @"c:\My Documents\Visual Studio 2013\Projects\
              WindowsControlLibrary2\WindowsControlLibrary2\bin\
              Debug\WindowsControlLibrary2.dll";
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}";
    
            toolWins = (Windows2)_applicationObject.Windows;
            // Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, 
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, 
              ref objTemp);
            // The tool window must be visible before you do anything 
            // with it, or you will get an error.
            if (toolWin != null)
            {
                toolWin.Visible = true;
            }
            // Set the new tool window's height and width, 
            // and then close it.
            System.Windows.Forms.MessageBox.Show("Setting the height 
            to 500 and width to 400...");
            toolWin.Height = 500;
            toolWin.Width = 400;
            System.Windows.Forms.MessageBox.Show
              ("Closing the tool window...");
            toolWin.Close(vsSaveChanges.vsSaveChangesNo);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Exception: " 
              + ex.Message);
        }
    }
    

    Uwaga Powyższy kod wymaga odwołania do przestrzeni nazw System.Windows.Forms.

  3. Zmień wartości zmiennych ctlProgID, asmPath i guidStr na takie, które odpowiadają kontrolce użytkownika.

  4. Tworzenie i uruchamianie projektu.

  5. W menu Narzędzia kliknij opcję Menedżer dodatków i włącz dodatek.

Nowe okno narzędzia pojawi się w oknie środowiska IDE.Można je przenieść w dowolne miejsce albo zadokować razem z innymi oknami narzędzi.

Zobacz też

Zadania

Porady: zmienianie charakterystyki okna

Porady: tworzenie dodatku

Wskazówki: tworzenie kreatora

Koncepcje

Kontrolowanie ustawień opcji

Wykres modelu obiektów automatyzacji

Inne zasoby

Tworzenie i kontrolowanie okien środowiska

Tworzenie dodatków i kreatorów

Odwołanie do automatyzacji i rozszerzalności