Une introduction à la programmation d'un contrôle VB.NET avec héritage

La construction de composants personnalisés complets peut être un projet très avancé. Mais vous pouvez créer une classe VB.NET qui présente de nombreux avantages d'un composant de boîte à outils avec beaucoup moins d'efforts. Voici comment!

Pour avoir une idée de ce que vous devez faire pour créer un composant personnalisé complet, essayez cette expérience:

-> Ouvrez un nouveau projet d'application Windows dans VB.NET.
-> Ajouter une CheckBox de la boîte à outils au formulaire.
-> Cliquez sur le bouton "Afficher tous les fichiers" en haut de l'Explorateur de solutions.

Cela affichera les fichiers que Visual Studio crée pour votre projet (vous n'avez donc pas à le faire). En tant que note de bas de page historique, le compilateur VB6 a fait beaucoup des mêmes choses, mais vous n'avez jamais pu accéder au code car il était enterré dans le "p-code" compilé. Vous pouvez également développer des contrôles personnalisés dans VB6, mais c'était beaucoup plus difficile et nécessitait un utilitaire spécial que Microsoft fournissait juste à cet effet.

Sous la forme Designer.vb , vous constaterez que le code ci-dessous a été ajouté automatiquement aux bons emplacements pour prendre en charge le composant CheckBox. (Si vous avez une version différente de Visual Studio, votre code peut être légèrement différent.) Il s'agit du code que Visual Studio écrit pour vous.

'Requis par les composants privés de Windows Form Designer _ As System.ComponentModel.IContainer'REMARQUE: La procédure suivante est requise'par le Windows Form Designer'Il peut être modifié à l'aide de Windows Form Designer.'Ne le modifiez pas à l'aide de l'éditeur de code . _Private Sub InitializeComponent () Me.CheckBox1 = New System.Windows.Forms.CheckBox () Me.SuspendLayout () "CheckBox1 'Me.CheckBox1.AutoSize = True Me.CheckBox1.Location = New System.Drawing.Point (29, 28 ) Me.CheckBox1.Name = "CheckBox1"… et ainsi de suite… 

Il s'agit du code que vous devez ajouter à votre programme pour créer un contrôle personnalisé. Gardez à l'esprit que toutes les méthodes et propriétés du contrôle CheckBox réel sont dans une classe fournie par le .NET Framework: System.Windows.Forms.CheckBox. Cela ne fait pas partie de votre projet car il est installé dans Windows pour tous les programmes .NET. Mais il y a un lot de celui-ci.

Un autre point à savoir est que si vous utilisez WPF (Windows Presentation Foundation), la classe .NET CheckBox provient d'une bibliothèque complètement différente nommée System.Windows.Controls. Cet article ne fonctionne que pour une application Windows Forms, mais les principes d'héritage ici fonctionnent pour tout projet VB.NET.

Supposons que votre projet ait besoin d'un contrôle qui ressemble beaucoup à l'un des contrôles standard. Par exemple, une case à cocher qui a changé de couleur ou affiché un minuscule "visage heureux" au lieu d'afficher le petit graphique "check". Nous allons créer une classe qui fait cela et vous montrer comment l'ajouter à votre projet. Bien que cela puisse être utile en soi, le véritable objectif est de démontrer VB.NET héritage.

Commençons le codage

Pour commencer, changez le nom de la CheckBox que vous venez d'ajouter à oldCheckBox. (Vous souhaiterez peut-être arrêter d'afficher à nouveau "Afficher tous les fichiers" pour simplifier l'Explorateur de solutions.) Ajoutez maintenant une nouvelle classe à votre projet. Il existe plusieurs façons de procéder, notamment en cliquant avec le bouton droit sur le projet dans l'Explorateur de solutions et en sélectionnant "Ajouter" puis "Classe" ou en sélectionnant "Ajouter une classe" sous l'élément de menu Projet. Remplacez le nom de fichier de la nouvelle classe par newCheckBox pour garder les choses droites. Enfin, ouvrez la fenêtre de code de la classe et ajoutez ce code:

Classe publique newCheckBox Hérite CheckBox Private CenterSquareColor As Color = Color.Red Protected Overrides Sub OnPaint (ByVal pEvent _ As PaintEventArgs) Dim CenterSquare _ As New Rectangle (3, 4, 10, 12) MyBase.OnPaint (pEvent) If Me.Checked Then pEvent.Graphics.FillRectangle (New SolidBrush (CenterSquareColor), CenterSquare) End If End SubEnd, classe

(Dans cet article et dans d'autres sur le site, de nombreuses continuations de lignes sont utilisées pour garder les lignes courtes afin qu'elles s'insèrent dans l'espace disponible sur la page Web.)

La première chose à noter à propos de votre nouveau code de classe est le Hérite mot-clé. Cela signifie que toutes les propriétés et méthodes d'un CheckBox VB.NET Framework font automatiquement partie de celui-ci. Pour apprécier le travail que cela économise, vous devez avoir essayé de programmer quelque chose comme un composant CheckBox à partir de zéro.

Il y a deux éléments clés à noter dans le code ci-dessus:

Le premier est le code utilise Passer outre pour remplacer le comportement .NET standard qui aurait lieu pour un OnPaint un événement. Un événement OnPaint est déclenché chaque fois que Windows remarque qu'une partie de votre affichage doit être reconstruite. Un exemple serait lorsqu'une autre fenêtre découvre une partie de votre affichage. Windows met automatiquement à jour l'affichage, mais appelle ensuite l'événement OnPaint dans votre code. (L'événement OnPaint est également appelé lors de la création initiale du formulaire.) Donc, si nous remplaçons OnPaint, nous pouvons changer l'apparence des choses à l'écran..

La seconde est la façon dont Visual Basic crée le CheckBox. Chaque fois que le parent est «vérifié» (c'est-à-dire, Me.Checked est Vrai), le nouveau code que nous fournissons dans notre classe NewCheckBox recolore le centre de la CheckBox au lieu de tracer une coche.