Procédure pas à pas : Déboguer des contrôles Windows Forms personnalisés au moment du design

Lorsque vous créez un contrôle personnalisé, il est souvent nécessaire de déboguer son comportement au moment du design. Cela est particulièrement vrai si vous créez un concepteur personnalisé pour votre contrôle personnalisé. Pour plus d’informations, consultez Procédure pas à pas : création d’un contrôle Windows Forms qui tire parti des fonctionnalités au moment du design de Visual Studio.

Vous pouvez déboguer vos contrôles personnalisés à l’aide de Visual Studio, comme vous le feriez pour déboguer d’autres classes .NET Framework. La différence est que vous allez déboguer une instance distincte de Visual Studio qui exécute le code de votre contrôle personnalisé.

Important

Cet article est principalement destiné au Concepteur in-process classique pour Windows Forms avec .NET Framework. Les procédures peuvent ne pas être directement applicables ou entièrement compatibles avec les projets qui ciblent .NET (et non .NET Framework).

Pour les projets .NET Framework, seuls les projets qui peuvent être compilés avec les paramètres cibles de la plateforme Any ou x64 sont entièrement pris en charge dans le Concepteur. Les projets qui utilisent ActiveX, COM ou d’autres composants 32 bits peuvent rencontrer des problèmes de compatibilité. Le Concepteur out-Of_Process Framework, actuellement en préversion, résout la plupart de ces problèmes de compatibilité. Toutefois, les fonctionnalités au moment du design peuvent ne pas fonctionner ainsi que le Concepteur in-process 64 bits. Pour activer le Concepteur Out-Of-Process Framework, accédez aux fonctionnalités d’aperçu de l’environnement >Options>outils.>

Pour plus d’informations sur le Concepteur hors processus, consultez les modifications apportées au concepteur depuis .NET Framework.

Créer le projet

La première étape consiste à créer le projet d’application. Vous utiliserez ce projet pour générer l’application qui héberge le contrôle personnalisé.

Dans Visual Studio, créez un projet d’application Windows et nommez-le DébogageExample.

Créer le projet de bibliothèque de contrôles

  1. Ajoutez un projet de bibliothèque de contrôles Windows à la solution.

  2. Ajoutez un nouvel élément UserControl au projet DebugControlLibrary. Nommez-le DebugControl.

  3. Dans Explorateur de solutions, supprimez le contrôle par défaut du projet en supprimant le fichier de code avec un nom de base de UserControl1.

  4. Générez la solution.

Point de contrôle

À ce stade, vous pourrez voir votre contrôle personnalisé dans la boîte à outils.

Pour case activée votre progression, recherchez le nouvel onglet appelé Composants DebugControlLibrary, puis cliquez pour le sélectionner. Quand elle s’ouvre, votre contrôle apparaît sous la forme DebugControl avec l’icône par défaut en regard de celle-ci.

Ajouter une propriété à votre contrôle personnalisé

Pour démontrer que le code de votre contrôle personnalisé s’exécute au moment du design, vous allez ajouter une propriété et définir un point d’arrêt dans le code qui implémente la propriété.

  1. Ouvrez DebugControl dans l’éditeur de code. Ajoutez le code suivant à la définition de classe :

    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. Générez la solution.

Ajouter votre contrôle personnalisé au formulaire hôte

Pour déboguer le comportement au moment du design de votre contrôle personnalisé, vous placez une instance de la classe de contrôle personnalisée sur un formulaire hôte.

  1. Dans le projet « DébogageExample », ouvrez Form1 dans le Concepteur Windows Forms.

  2. Dans la boîte à outils, ouvrez l’onglet Composants DebugControlLibrary et faites glisser une instance DebugControl sur le formulaire.

  3. Recherchez la DemoString propriété personnalisée dans la fenêtre Propriétés . Notez que vous pouvez modifier sa valeur comme vous le feriez pour toute autre propriété. Notez également que lorsque la DemoString propriété est sélectionnée, la chaîne de description de la propriété apparaît en bas de la fenêtre Propriétés .

Configurer le projet pour le débogage au moment du design

Pour déboguer le comportement de conception de votre contrôle personnalisé, vous allez déboguer une instance distincte de Visual Studio qui exécute le code de votre contrôle personnalisé.

  1. Cliquez avec le bouton droit sur le projet DebugControlLibrary dans le Explorateur de solutions, puis sélectionnez Propriétés.

  2. Dans la feuille de propriétés DebugControlLibrary , sélectionnez l’onglet Débogage .

    Dans la section Démarrer l’action, sélectionnez Démarrer le programme externe. Vous allez déboguer une instance distincte de Visual Studio. Cliquez donc sur le bouton de sélection (The Ellipsis button (...) in the Properties window of Visual Studio) pour rechercher l’IDE Visual Studio. Le nom du fichier exécutable est devenv.exe et, si vous avez installé à l’emplacement par défaut, son chemin est %ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.

  3. puis cliquez sur OK pour fermer la boîte de dialogue.

  4. Cliquez avec le bouton droit sur le projet DebugControlLibrary , puis sélectionnez Définir comme projet de démarrage pour activer cette configuration de débogage.

Déboguer votre contrôle personnalisé au moment du design

Vous êtes maintenant prêt à déboguer votre contrôle personnalisé au fur et à mesure qu’il s’exécute en mode création. Lorsque vous démarrez la session de débogage, une nouvelle instance de Visual Studio sera créée et vous l’utiliserez pour charger la solution « DébogageExample ». Lorsque vous ouvrez Form1 dans le Concepteur de formulaires, une instance de votre contrôle personnalisé est créée et commence à s’exécuter.

  1. Ouvrez le fichier source DebugControl dans l’Éditeurde code et placez un point d’arrêt sur l’accesseur Set de la DemoString propriété.

  2. Appuyez sur F5 pour démarrer la session de débogage. Une nouvelle instance de Visual Studio est créée. Vous pouvez faire la distinction entre les instances de deux façons :

    • L’instance de débogage a le mot En cours d’exécution dans sa barre de titre

    • L’instance de débogage a le bouton Démarrer dans sa barre d’outils Debug désactivée

    Votre point d’arrêt est défini dans l’instance de débogage.

  3. Dans la nouvelle instance de Visual Studio, ouvrez la solution « DébogageExample ». Vous pouvez facilement trouver la solution en sélectionnant Projets récents dans le menu Fichier . Le fichier de solution « DébogageExample.sln » est répertorié comme fichier le plus récent utilisé.

    Important

    Si vous déboguez un projet .NET 6 ou version ultérieure, ne chargez pas le projet, utilisez plutôt cette instance de Visual Studio pour attacher un débogueur au processus DesignToolsServer.exe . Sélectionnez l’élément de menu Déboguer>Attacher au processus. Recherchez DesignToolsServer.exe dans la liste des processus et appuyez sur Attach. Pour plus d’informations, consultez Les modifications apportées au concepteur depuis .NET Framework.

  4. Ouvrez Form1 dans le Concepteur de formulaires et sélectionnez le contrôle DebugControl .

  5. Modifiez la valeur de la propriété DemoString . Lorsque vous validez la modification, l’instance de débogage de Visual Studio acquiert le focus et l’exécution s’arrête à votre point d’arrêt. Vous pouvez parcourir l’accesseur de propriété de la même façon que tout autre code.

  6. Pour arrêter le débogage, quittez l’instance hébergée de Visual Studio ou sélectionnez le bouton Arrêter le débogage dans l’instance de débogage.

Étapes suivantes

Maintenant que vous pouvez déboguer vos contrôles personnalisés au moment du design, il existe de nombreuses possibilités pour développer l’interaction de votre contrôle avec l’IDE Visual Studio.

  • Vous pouvez utiliser la DesignMode propriété de la classe pour écrire du Component code qui ne s’exécutera qu’au moment du design. Pour plus d’informations, consultez DesignMode.

  • Vous pouvez appliquer plusieurs attributs aux propriétés de votre contrôle pour manipuler l’interaction de votre contrôle personnalisé avec le concepteur. Vous trouverez ces attributs dans l’espace System.ComponentModel de noms.

  • Vous pouvez écrire un concepteur personnalisé pour votre contrôle personnalisé. Cela vous permet de contrôler complètement l’expérience de conception à l’aide de l’infrastructure de concepteur extensible exposée par Visual Studio. Pour plus d’informations, consultez Procédure pas à pas : création d’un contrôle Windows Forms qui tire parti des fonctionnalités au moment du design de Visual Studio.

Voir aussi