La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les contrôles utilisateur

Présentations similaires


Présentation au sujet: "Les contrôles utilisateur"— Transcription de la présentation:

1 Les contrôles utilisateur
Hugo St-Louis Architecture des applications Hiver 2017

2 Plan de présentation Qu’est-ce qu’un contrôle utilisateur
Création d’un contrôle utilisateur dans Visual Studio Utilisation des contrôles utilisateurs Les tags spéciaux TP#5 Exemple tiré de :

3 Qu’est-ce qu’un contrôle utilisateur
Parfois, il arrive qu’un comportement appliqué sur un composant ou un ensemble de composants .NET soit répété à plusieurs reprises dans l’application. Plutôt que de doubler le code, nous allons créer des Contrôles Utilisateurs(UserControls) qui pourront être réutilisés.

4 Création d’un contrôle utilisateur dans Visual Studio
Pour créer un contrôle utilisateur, vous avez deux options: Soit vous créer un projet de type Bibliothèque de Contrôle Windows Form, WPF, ou autre. L’avantage de cette solution c’est que tous vos contrôles utilisateurs pourront s’exporter dans une DLL. Soit vous ajouter un Contrôle utilisateur dans un projet existant. Par contre, il ne sera pas possible de l’exporter aussi facilement.

5 Création d’un contrôle utilisateur dans Visual Studio
Voir un exemple des deux choix possibles:

6 Création d’un contrôle utilisateur dans Visual Studio
Le résultat d’un contrôle utilisateur donne une fenêtre Windows classique, mais sur laquelle il n’y a pas de bordure. Sur ce formulaire, vous allez pouvoir utiliser toutes les capacités de Visual Studio, et en particulier le glisser/déposer de composants, pour créer votre composant personnalisé.

7 Création d’un contrôle utilisateur dans Visual Studio
À nous de jouer, nous allons créer le contrôle utilisateur suivants dans une bibliothèque.

8 Utilisation des attributs
Si vous voulez pouvoir modifier certaines propriétés de vos UserControls dans la fenêtre "Properties" (Propriétés) de Visual Studio, vous devez utiliser les attributs(MetaTag). Voici une liste, non exhaustive, des attributs qu'il vous est possible d'utiliser: Category Description Browsable DefaultValue DefaultEvent Il est possible de les combiner en les séparant avec une virgule.

9 Attribut Category Cet attribut (Category)vous permet de définir dans quelle catégorie vous voulez que votre propriété soit placée. En effet, par défaut, la catégorie utilisée est "Misc" mais vous pouvez tout à fait modifier cela: [Category("Configuration")] public String Title { get return this.grpConnexion.Text; } set this.grpConnexion.Text = value;

10  Attribut Description L'attribut Description vous permet d'afficher, dans l'explorateur de propriétés, une petite description relative à la propriété (ou l'événement) sélectionné. Cela peut s'avérer très pratique si vous avez besoin de donner des informations, à l'utilisateur. [Description("Le texte à afficher pour le nom d'utilisateur")] public String NomUtilisateurText { get return this.lblNomUtilisateur.Text; } set this.lblNomUtilisateur.Text = value;

11  Attribut Browsable Le dernier attribut dont je voulais vous parler est l'attribut Browsable. Celui- ci vous permet d'indiquer si, dans l'explorateur de propriétés, la propriété sélectionnée peut être modifiée. Dans le cas contraire, elle apparait comme grisée dans l'explorateur. A noter que cet attribut prend en paramètre un booléen, et non pas une chaîne de caractère comme pour les autres attributs. [Browsable(false)] public String MotDePasseText { get return this.lblMDP.Text; } set this.lblMDP.Text = value;

12 Associer une image à votre UserControl
Vous avez la possibilité d'associer une image à votre UserControl, afin de le personnaliser encore plus et de le reconnaitre plus facilement dans la boite à outils. Pour cela, commencez par inclure votre image à votre projet (clique droit sur le projet, puis sélectionner « Ajout" => « Nouvel Item") et, dans les propriétés, positionner « Action de génération" sur "Ressource incorporée". Cela aura pour effet d'incorporer votre image dans la DLL de votre UserControl. [ToolboxBitmap(typeof(LoginPassword), "chemistry.ico")] public partial class LoginPassword: UserControl {

13 Utilisation du UserControl
Première étape, construire la DLL. Deuxième étape, il faut ajouter la DLL dans le projet où on veut l’utiliser. S’il n’apparaît pas automatiquement dans la boîte à outil, ajoutez le à partir de la boîte à outilChoisir les éléments…

14 Les événements Comme tout contrôle .NET, votre UserControl possède des évènements prédéfinis (Load, Paint, etc...), jusque là, rien de bien nouveau. Il est possible de rendre disponible les événements de votre contrôle.  vous devez avoir au moins deux choses: un délégué pour l'événement le UserControl qui contient la déclaration de l'événement // Déclaration des délégués public delegate void ValidButtonClickHandler(object sender, EventArgs e); public delegate void CancelButtonClickHandler(object sender, EventArgs e);

15 Les événements le UserControl qui contient la déclaration de l'événement // Déclaration des évènements qui utilisent ces délégués [Category("Configuration"), Browsable(true), Description("Evènement associé au bouton de validation")] public event ValidButtonClickHandler BoutonValidClick; [Category("Configuration"), Browsable(true), Description("Evènement associé au bouton d'annulation")] public event CancelButtonClickHandler BoutonCancelClick; protected virtual void OnValidButtonClick(EventArgs e) { if (BoutonValidClick != null) BoutonValidClick(this, e); } protected virtual void OnCancelButtonClick(EventArgs e) if (BoutonCancelClick != null) BoutonCancelClick(this, e);

16 Les événements Il ne reste plus qu’à faire un appel à l’événement qui référence le delegate à partir de l’événement du bouton: private void btnValider_Click(object sender, EventArgs e) { OnValidButtonClick(e); } private void btnAnnuler_Click(object sender, EventArgs e) OnCancelButtonClick(e);

17 Les événements Voilà, on peut maintenant l’utiliser dans notre solution.

18 Les smartTags Les SmartTags sont une des nouveautés de Visual Studio 2005 et le Framework .NET 2.0. Ils représentent une sorte de menu contextuel pour vos contrôles. Pour commencer, créer une classe UserControlActionList qui héritera de System.ComponentModel.Design.DesignerActionList: cette classe contiendra la liste des propriétés qui devront être ajoutées au SmartTag. Dans cette classe, redéfinissons la méthode GetSortedActionItems qui nous permet de récupérer les actions définies par l'utilisateur. A noter que cette méthode vous renvoit une DesignerActionItemCollection (une collection de DesignerActionItem ) et que vous avez à votre disposition, les DesignerActionItem suivants: DesignerActionHeaderItem: Permet d'afficher un nom de groupe de propriétés DesignerActionMethodItem: Permet d'appeler une méthode de l'ActionList DesignerActionPropertyItem: Permet d'afficher/éditer une propriété DesignerActionTextItem: Permet d'afficher une ligne de texte using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections.Generic; namespace WindowsFormsControlLibrary1 public class UserControlActionList : DesignerActionList { using System.Threading.Tasks; using System.Linq; using System.Text; } public UserControlActionList(IComponent component) : base(component) set PropertyDescriptor property = TypeDescriptor.GetProperties(this.Component)["Title"]; get { return ((LoginPassword) this.Component).Title; } // Liste des propriétés à ajouter au SmartTag public String Title property.SetValue(this.Component, value); PropertyDescriptor property = TypeDescriptor.GetProperties(this.Component)["NomUtilisateurText"]; get { return ((LoginPassword) this.Component).NomUtilisateurText; } public String NomUtilisateurText get { return ((LoginPassword) this.Component).MotDePasseText; } public String MotDePasseText PropertyDescriptor property = TypeDescriptor.GetProperties(this.Component)["MotDePasseText"]; public override DesignerActionItemCollection GetSortedActionItems() items.Add(new DesignerActionPropertyItem("NomUtilisateurText", "Définissez le nom d'utilisateur par défaut: ")); items.Add(new DesignerActionPropertyItem("MotDePasseText", "Définissez mot de passe par défaut: ")); items.Add(new DesignerActionHeaderItem("Paramétrage")); items.Add(new DesignerActionPropertyItem("Title", "Définissez le titre du groupe de contrôles: ")); DesignerActionItemCollection items = new DesignerActionItemCollection(); return items;

19 Les smartTags Une fois que vous avez fait cela, il ne vous reste plus qu'à créer le SmartTag. Cela se fait en créant une classe (par exemple DesignerUserControl), qui hérite de System.Windows.Forms.Design.ControlDesigner. Et voila, vous avez terminé la création de votre SmartTag. Pour l'utiliser, c'est très simple: il vous suffit simplement d'ajouter l'attribut Designer à votre UserControl: public class DesignerUserControl : System.Windows.Forms.Design.ControlDesigner public override DesignerActionListCollection ActionLists // On définit la liste des actions du SmartTag { get DesignerActionListCollection collectionAction = new DesignerActionListCollection(); UserControlActionList designerActionList = new UserControlActionList(this.Control); return collectionAction; collectionAction.Add(designerActionList); } [ToolboxBitmap(typeof(LoginPassword), "chemistry.ico")] [Designer(typeof(DesignerUserControl))] [Docking(DockingBehavior.Ask)] public partial class LoginPassword: UserControl {

20 Les smartTags Talam!

21 TP#5 Dernier TP!

22 Questions et réponses


Télécharger ppt "Les contrôles utilisateur"

Présentations similaires


Annonces Google