Freigeben über


Exemplarische Vorgehensweise: Debuggen von benutzerdefinierten Windows Forms-Steuerelementen zur Entwurfszeit

Wenn Sie ein benutzerdefiniertes Steuerelement erstellen, finden Sie häufig die Notwendigkeit, das Entwurfszeitverhalten zu debuggen. Dies gilt insbesondere, wenn Sie einen benutzerdefinierten Designer für Ihr benutzerdefiniertes Steuerelement erstellen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Windows Forms-Steuerelements, das Visual Studio-Entwurfszeitfunktionen nutzt.

Sie können Ihre benutzerdefinierten Steuerelemente mithilfe von Visual Studio debuggen, genau wie alle anderen .NET Framework-Klassen. Der Unterschied besteht darin, dass Sie eine separate Instanz von Visual Studio debuggen, die den Code des benutzerdefinierten Steuerelements ausführt.

Von Bedeutung

Dieser Artikel ist in erster Linie für den klassischen In-Process Designer für Windows Forms mit .NET Framework vorgesehen. Die Verfahren sind möglicherweise nicht direkt anwendbar oder vollständig kompatibel mit Projekten, die auf .NET (nicht .NET Framework) abzielen.

Bei .NET Framework-Projekten werden nur Projekte, die mit den Plattformzieleinstellungen Any oder x64 kompiliert werden können, im Designer vollständig unterstützt. Projekte, die ActiveX, COM oder andere 32-Bit-Komponenten verwenden, können Kompatibilitätsprobleme haben. Der Out-Of_Process Framework-Designer, derzeit in der Vorschau, behebt viele dieser Kompatibilitätsprobleme. Entwurfszeitfunktionen funktionieren jedoch möglicherweise nicht so gut wie der 64-Bit-In-Process-Designer. Um den Out-of-Process Framework-Designer zu aktivieren, navigieren Sie zu Extras>Optionen>Umgebung>Previewfunktionen.

Weitere Informationen zum Out-Of-Process-Designer finden Sie unter Die Designeränderungen seit .NET Framework.

Erstelle das Projekt

Der erste Schritt besteht darin, das Anwendungsprojekt zu erstellen. Sie verwenden dieses Projekt, um die Anwendung zu erstellen, die das benutzerdefinierte Steuerelement hosten soll.

Erstellen Sie in Visual Studio ein Windows-Anwendungsprojekt, und nennen Sie es DebuggingExample.

Erstellen des Projekts für die Steuerelementbibliothek

  1. Fügen Sie ein Windows-Steuerelementbibliothek-Projekt zur Lösung hinzu.

  2. Fügen Sie dem DebugControlLibrary-Projekt ein neues UserControl Element hinzu. Nennen Sie es DebugControl.

  3. Löschen Sie im Projektmappen-Explorer das Standardsteuerelement des Projekts, indem Sie die Codedatei mit einem Basisnamen von UserControl1 löschen.

  4. Erstellen Sie die Lösung.

Kontrollpunkt

An diesem Punkt können Sie Ihr benutzerdefiniertes Steuerelement in der Toolbox sehen.

Um den Fortschritt zu überprüfen, suchen Sie die neue Registerkarte DebugControlLibrary-Komponenten und klicken Sie darauf, um sie auszuwählen. Wenn es geöffnet wird, wird Ihr Steuerelement als DebugControl mit dem Standardsymbol neben ihm aufgeführt.

Fügen Sie eine Eigenschaft zu Ihrem benutzerdefinierten Steuerelement hinzu

Um zu veranschaulichen, dass der Code des benutzerdefinierten Steuerelements zur Entwurfszeit ausgeführt wird, fügen Sie eine Eigenschaft hinzu und legen einen Breakpoint im Code fest, der die Eigenschaft implementiert.

  1. Öffnen Sie DebugControl im Code-Editor. Fügen Sie der Klassendefinition den folgenden Code hinzu:

    Private demoStringValue As String = Nothing
    <BrowsableAttribute(true)>
    Public Property DemoString() As String
    
        Get
            Return Me.demoStringValue
        End Get
    
        Set(ByVal value As String)
            Me.demoStringValue = value
        End Set
    
    End Property
    
    private string demoStringValue = null;
    [Browsable(true)]
    public string DemoString
    {
        get
        {
            return this.demoStringValue;
        }
        set
        {
            demoStringValue = value;
        }
    }
    
  2. Erstellen Sie die Lösung.

Hinzufügen Ihres benutzerdefinierten Steuerelements zum Hostformular

Um das Entwurfszeitverhalten Ihres benutzerdefinierten Steuerelements zu debuggen, platzieren Sie eine Instanz der benutzerdefinierten Steuerelementklasse in einem Host-Formular.

  1. Öffnen Sie im Projekt "DebuggingExample" Formular 1 im Windows Forms Designer.

  2. Öffnen Sie in der Toolbox die Registerkarte DebugControlLibrary-Komponenten und ziehen Sie eine DebugControl-Instanz auf das Formular.

  3. Suchen Sie die benutzerdefinierten DemoString-Eigenschaften im Fenster Eigenschaften. Beachten Sie, dass Sie ihren Wert wie jede andere Eigenschaft ändern können. Beachten Sie außerdem, dass beim Auswählen der DemoString-Eigenschaft die Beschreibungszeichenfolge der Eigenschaft unten im Fenster Eigenschaften angezeigt wird.

Einrichten des Projekts für das Entwurfszeitdebuggen

Um das Entwurfszeitverhalten Ihres benutzerdefinierten Steuerelements zu debuggen, debuggen Sie eine separate Instanz von Visual Studio, die den Code Ihres benutzerdefinierten Steuerelements ausführt.

  1. Klicken Sie auf das DebugControlLibrary-Projekt im Projektmappen-Explorer aus und wählen Sie Eigenschaften.

  2. Wählen Sie im Eigenschaftenblatt DebugControlLibrary die Registerkarte Debuggen aus.

    Wählen Sie im Abschnitt Startaktion die Option Externes Programm starten aus. Sie debuggen eine separate Instanz von Visual Studio, also klicken Sie auf die Schaltfläche mit Auslassungspunkten (Die Schaltfläche mit Auslassungspunkten (...) im Fenster „Eigenschaften“ von Visual Studio), um nach der Visual Studio-IDE zu suchen. Der Name der ausführbaren Datei ist devenv.exe und wenn Sie den Standardspeicherort installiert haben, ist sein Pfad %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.

  3. Wählen Sie OK aus, um das Dialogfeld zu schließen.

  4. Klicken Sie mit der rechten Maustaste auf das DebugControlLibrary Projekt, und wählen Sie Als Startprojekt festlegen aus, um diese Debugkonfiguration zu aktivieren.

Debuggen des benutzerdefinierten Steuerelements zur Entwurfszeit

Jetzt sind Sie bereit, Ihr benutzerdefiniertes Steuerelement zu debuggen, da es im Entwurfsmodus ausgeführt wird. Wenn Sie die Debug-Sitzung starten, wird eine neue Instanz von Visual Studio erstellt und Sie verwenden es, um die Lösung „DebuggingExample" zu laden. Wenn Sie Formular1 im Formular-Designer öffnen, wird eine Instanz Ihres benutzerdefinierten Steuerelements erstellt und gestartet.

  1. Öffnen Sie die DebugControl-Quelldatei im Code-Editor und legen Sie einen Breakpoint auf dem Set-Accessor der DemoString-Eigenschaft fest.

  2. Drücken Sie F5-, um die Debugsitzung zu starten. Es wird eine neue Instanz von Visual Studio erstellt. Sie können zwischen den Instanzen auf zwei Arten unterscheiden:

    • Die Debug-Instanz verfügt über das Wort Ausführen in der Titelleiste

    • Die Debug-Instanz hat die Schaltfläche Start auf der Symbolleiste Debuggen deaktiviert

    Ihr Breakpoint wird in der Debug-Instanz festgelegt.

  3. Öffnen Sie in der neuen Visual Studio-Instanz die Lösung "DebuggingExample". Sie können die Projektmappe ganz einfach finden, indem Sie im Menü Datei die Option Zuletzt verwendete Projekte auswählen. Die Lösungsdatei "DebuggingExample.sln" wird als zuletzt verwendete Datei aufgeführt.

    Von Bedeutung

    Wenn Sie ein .NET 6- oder höher-Windows Forms-Projekt debuggen, laden Sie das Projekt nicht, sondern verwenden Sie diese Instanz von Visual Studio, um einen Debugger an den DesignToolsServer.exe Prozess anzufügen. Wählen Sie das Menüelement Debuggen>An Prozess anhängen aus. Suchen Sie DesignToolsServer.exe in der Liste der Prozesse und drücken Sie Anfügen. Weitere Informationen finden Sie unter Der Designer ändert sich seit .NET Framework.

  4. Öffnen Sie das Formular1 im Formular-Designer und wählen Sie das DebugControl-Steuerelement aus.

  5. Ändern Sie den Wert der DemoString-Eigenschaft. Wenn Sie die Änderung übernehmen, erhält die Debug-Instanz von Visual Studio den Fokus und die Ausführung an Ihrem Breakpoint. Sie können den Eigenschaftszugriff genau so wie jeden anderen Code durchlaufen.

  6. Um das Debuggen zu beenden, beenden Sie die gehostete Instanz von Visual Studio, oder wählen Sie die Schaltfläche Debuggen beenden in der Debuginstanz aus.

Nächste Schritte

Nachdem Sie Ihre benutzerdefinierten Steuerelemente im Entwurfsmodus debuggen können, gibt es viele Möglichkeiten, die Interaktion Ihrer Steuerelemente mit der Visual Studio-IDE zu erweitern.

  • Sie können die DesignMode-Eigenschaft der Component-Klasse verwenden, um Code zu schreiben, der nur zur Entwurfszeit ausgeführt wird. Weitere Informationen finden Sie unter DesignMode.

  • Es gibt mehrere Attribute, die Sie auf die Eigenschaften Ihres Steuerelements anwenden können, um die Interaktion des benutzerdefinierten Steuerelements mit dem Designer zu beeinflussen. Sie finden diese Attribute im System.ComponentModel Namespace.

  • Sie können einen benutzerdefinierten Designer für Ihr benutzerdefiniertes Steuerelement schreiben. Dadurch erhalten Sie vollständige Kontrolle über die Entwurfsoberfläche mithilfe der erweiterbaren Designerinfrastruktur, die von Visual Studio verfügbar gemacht wird. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Erstellen eines Windows Forms-Steuerelements, das Visual Studio-Entwurfszeitfunktionen nutzt.

Siehe auch