Partager via


Développement de contrôle personnalisé

Mise à jour : novembre 2007

Le .NET Compact Framework fournit des contrôles Windows Forms susceptibles de répondre aux besoins de la plupart des projets smart device. Ces contrôles ont été conçus pour utiliser efficacement des ressources limitées et, par conséquent, ne fournissent pas de prise en charge pour la totalité des propriétés, méthodes et événements hérités. Pour obtenir les fonctionnalités manquantes, vous pouvez dériver vos propres contrôles personnalisés de contrôles communs. Un contrôle personnalisé peut être créé en définissant un type public qui hérite de la classe Control ou d'un UserControl existant dans votre assembly.

La façon la plus simple de personnaliser un contrôle consiste à substituer une méthode sur un contrôle commun. Par exemple, vous pouvez substituer la méthode OnKeyPress pour un contrôle TextBox afin de fournir un code qui limite la saisie aux seuls caractères numériques.

Remarque :

Le .NET Compact Framework ne prend pas en charge la totalité des propriétés, méthodes et événements des contrôles Windows Forms hérités de leurs contrôles de base.

Vous pouvez dériver vos propres contrôles à partir de contrôles communs pour :

  • substituer vos propres propriétés, méthodes et événements sur des contrôles communs ;

  • définir des propriétés, des méthodes et des événements supplémentaires pour un contrôle ;

  • Générez un contrôle composé, tel qu'une collection de contrôles TextBox et Button.

  • Définissez comment un contrôle répond aux actions de l'utilisateur, telles qu'un TextBox qui accepte uniquement des données numériques.

Dans sa version actuelle, le .NET Compact Framework ne fournit pas la possibilité d'ajouter un contrôle DTC personnalisé.

Si vous souhaitez effectuer une personnalisation plus élaborée, vous devez créer un contrôle personnalisé dérivé de la classe Control. Vous pouvez dessiner le contrôle en substituant la méthode OnPaint et créer des contrôles indépendants de l'interface utilisateur pour des besoins tels qu'un événement personnalisé.

La classe Control de base ignore comment un contrôle dérivé doit être dessiné et ne fournit pas de logique de peinture dans la méthode OnPaint. La méthode OnPaint de Control distribue uniquement l'événement Paint aux récepteurs d'événements enregistrés.

Le .NET Compact Framework déclenche les événements Paint et Resize pour les classes Form et Control uniquement.

Ajout de contrôles personnalisés dans la boîte à outils

Lorsque vous créez un projet pour un contrôle personnalisé dans Microsoft Visual Studio 2005, le contrôle est automatiquement ajouté dans la boîte à outils lorsque l'application est compilée. Vous pouvez créer un contrôle personnalisé à l'aide de l'un des types de projet suivants :

  • Bibliothèque de contrôles

  • Bibliothèque de classes

  • Bibliothèque de classes (1.0)

Pour ajouter un contrôle personnalisé dans la boîte à outils, cliquez sur Choisir des éléments de boîte à outils dans le menu Outils. Vous pouvez ensuite rechercher l'assembly du contrôle.

Techniques de contrôle personnalisées et considérations

Veuillez prendre en compte les éléments suivants lors de la création de contrôles personnalisés :

  • Le .NET Compact Framework ne prend pas en charge l'héritage des valeurs à partir d'un contrôle parent, comme il est possible de le faire avec certains contrôles dans le .NET Framework complet. Pour contourner ce problème, vous pouvez utiliser la méthode OnParentChanged pour déterminer lorsque le parent change et qu'il prend la mesure appropriée. L'exemple de code suivant illustre la modification de la couleur d'arrière-plan lorsque le parent change :

    protected override void OnParentChanged(EventArgs e)
    {
        base.OnParentChanged(e);
        this.BackColor = Parent.BackColor;
    }
    
    Protected Overrides Sub OnParentChanged(ByVal e As EventArgs) 
        MyBase.OnParentChanged(e)
        Me.BackColor = Parent.BackColor
    End Sub
    
  • Le .NET Compact Framework ne prend pas en charge l'héritage de la police d'un contrôle parent.

  • Pour détecter l'emplacement sur un contrôle personnalisé où un événement « tap and hold » (tap avec maintien de l'appui du stylet) s'est produit pour afficher un menu contextuel, gérez l'événement Popup, puis demandez les coordonnées actuelles de la souris à l'aide de la propriété MousePosition.

  • Pour sortir du contrôle personnalisé vers le contrôle précédent à l'aide de la tabulation, utilisez le code suivant dans le gestionnaire d'événements KeyDown lorsque la pression d'une touche Up est détectée.

    this.Parent.Controls(
        this.Parent.GetChildIndex(customcontrol) - 1).Focus()
    
    Me.Parent.Controls( _
        Me.Parent.GetChildIndex(customcontrol) - 1).Focus
    

Rubriques Comment faire

Les rubriques Comment faire suivantes indiquent comment utiliser des contrôles personnalisés pour obtenir des fonctionnalités étendues :

Comment : créer un événement double-clic personnalisé

Comment : créer un contrôle bouton d'image personnalisé

Comment : afficher un remplissage dégradé

Comment : créer une zone de texte numérique

Comment : créer une zone de liste owner-drawn

Comment : créer la fonctionnalité OnEnter

Comment : faire défiler le contenu d'un formulaire

Comment : trier les éléments ListView

Comment : sous-classer un contrôle TreeView à l'aide de rappels natifs

Comment : sous-classer un contrôle Button à l'aide de rappels natifs

Voir aussi

Concepts

Sous-classement de contrôles avec une procédure de fenêtre managée

Autres ressources

Contrôles Windows Forms dans le .NET Compact Framework