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 Steuerelements für Windows Forms, das Visual Studio-Entwurfszeitfunktionen nutzt.

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

Wichtig

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.

Erstellen eines Projekts

Im ersten Schritt erstellen Sie das Anwendungsprojekt. Sie verwenden dieses Projekt, um die Anwendung zu erstellen, die das benutzerdefinierte Steuerelement hostet.

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

Erstellen Sie das Steuerelementbibliotheksprojekt

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

  2. Fügen Sie ein neues UserControl-Element zum DebugControlLibrary-Projekt 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 Projektmappe.

Prüfpunkt

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 Projektmappe.

Fügen Sie Ihr benutzerdefiniertes Steuerelement zum Host-Formular hinzu

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 den Wert so ändern können, wie Sie alle anderen Eigenschaften verwenden würden. Beachten Sie auch, dass die DemoString-Eigenschaft gewählt ist, die Beschreibung der Eigenschaft wird am unteren Rand des Fensters Eigenschaften angezeigt.

Einrichten des Projekts für das Entwurfszeit-Debugging

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 Aktion starten das Externes Programm starten aus. Sie debuggen eine separate Instanz von Visual Studio, also klicken Sie auf die Ellipse-Schaltfläche (The Ellipsis button (...) in the Properties window of Visual Studio), um das Visual Studio IDE zu durchsuchen. 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 StartUp Project festlegen aus, um diese Debugkonfiguration zu aktivieren.

Debuggen Sie das benutzerdefinierte Steuerelement 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 eine Debug-Sitzung zu starten. Eine neue Instanz von Visual Studio wird 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 Instanz von Visual Studio die Lösung "DebuggingExample". Sie können die Lösung einfach finden, indem Sie im Datei-Menü die Lösung Zuletzt verwendete Projekte auswählen. Die Lösungsdatei "DebuggingExample.sln" wird als zuletzt verwendete Datei aufgeführt.

    Wichtig

    Wenn Sie ein .NET 6 oder ein höheres 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 Debug> anfügen aus, um das -Menüelement zu verarbeiten. Suchen Sie DesignToolsServer.exe in der Liste der Prozesse und drücken Sie Anfügen. Weitere Informationen finden Sie unter Der Designer hat sich seit .NET Framework verändert.

  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 alle anderen Code durchlaufen.

  6. Um das Debuggen anzuhalten, beenden Sie die gehostete Instanz von Visual Studio oder wählen Sie die Schaltfläche Debuggen anhalten in der Debug-Instanz aus.

Nächste Schritte

Nachdem Sie jetzt ihre benutzerdefinierten Steuerelemente zum Entwurfszeit debuggen können, gibt es viele Möglichkeiten, die Interaktion Ihres Steuerelements 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. Ausführliche Informationen finden Sie unter DesignMode.

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

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

Siehe auch