IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Propriétés étendues d'un contrôle au niveau du designer


Sujet :

Dotnet

  1. #1
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut Propriétés étendues d'un contrôle au niveau du designer
    Bonjour,

    J'ai un user control qui contient un label et un textbox... J'aimerais que lorsque je dépose mon user control sur une form, je puisse éditer via le designer les propriétés des contrôles label et textbox qui se trouvent dans le user control. Est-ce juste un attribut à utiliser (je ne l'ai pas trouvé en tout cas) ? Manipulation spéciale ?

    Je vous remercie d'avance,

    Jérôme.
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Juste comme ça, tu as essayé en mettant des propriétés publiques dans ton usercontrol qui pointent vers les instances de tes composants internes ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Juste comme ça, tu as essayé en mettant des propriétés publiques dans ton usercontrol qui pointent vers les instances de tes composants internes ?
    Bien sûr
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Ai trouvé deux articles qui peuvent t'intéresser :
    http://msdn2.microsoft.com/en-us/library/Aa302326.aspx
    http://msdn2.microsoft.com/en-us/library/aa302334.aspx

    Je ne suis pas sûr que ça réponde à ta problématique de le faire en utilisant une seule instruction, mais ça pourra t'aider si tu décides de faire ton propre designer.

    <pense a voix haute>
    Je pense aussi que tu pourrais faire un UITypeEditor qui, à partir d'un objet, affiche un propertygrid 'récursif'.
    </ pense a voix haute>
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    Intéressant les articles

    Merci ^^

    Il faudrait que la classe en question (dans mon cas Label et TextBox) ait l'attribut suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [TypeConverter(typeof(xxxConverter))]
    Mais je me demande si il y a pas déjà une classe LabelConverter/TextBoxConverter déjà existante dans le framework... Apparement non, au du moins pas sous ce nom

    Je sens que je vais devoir me retrousser les manches
    Jérôme Lambert
    Développeur, Architecte, Rédacteur & Fan technologies Microsoft
    Ma boite informatique | Mon profil LinkedIn

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Points : 104
    Points
    104
    Par défaut UserControl et WebControl
    Bien que très intéressants, les UserControls ont leurs limites. Ils ne sont que des abstractions mises en place pour permetre à ceux qui ne veulent ou ne peuvent faire de l'objet d'en approcher les plaisirs.

    Si votre imagination est fertile, vous allez vite et souvent vous sentir limité par les UserControls. Le temps qu'il vous feront gagner dans certains domaines sera probablement reperdu dans d'autres.

    Avantages des UserControls
    • Très rapides à mettre en place.
    • Nécessite peu de connaissance.
    Inconvéniant des UserControls
    • Limités, on ne peut pas tout faire.
    • La ruse peut nous sortir de la panade, mais l'expérience montre qu'à trop ruser sur un projet, on en perd bien souvent la maitrise.
    Alternative

    La vraie alternative, c'est programmer, c'est développer ses propres contrôles. Les possibilités sont infinies. Je dirait que la vrai limite c'est l'imagination. Les possibilités d'intégration dans les produits Visual Studio sont extra ordinaires :
    • Utilisation de modèles (Template)
    • Utilisation de région d'édition
    • Création de Verbs et de SmartTags
    • ...
    La difficulté, c'est que cela relève d'un certain niveau de compétance et d'expérience. Le fossé qui sépare la conception de UserControls et de contrôles personnalisé est beaucoup plus important qu'il n'y parrait.

    Solutions
    • Accepter de faire avec les limites des UserControls.
    • Apprendre à créer ses propres contrôles personnalisés.
    • Ou alors, on néglige trop souvent cette alternative, faire concevoir des contrôles personnalisés qui répondent parfaitement à nos besoins par un tiers.
    Pour exemple

    Voici une implémentation rapide et incomplète de votre cas d'encapsulation à partir d'un System.Web.UI.Control histoire de faire simple, mais qui peut vous montrer ce que cela peut donner.

    Un fichier MonControl.cs à placer dans le dossier App_Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    namespace IHM
    {
    [System.Web.UI.ParseChildren(true)]
    [System.Web.UI.PersistChildren(false)]
    publicclassMonControl : System.Web.UI.Control
    {
    private System.Web.UI.WebControls.Label _Label = newLabel();
    private System.Web.UI.WebControls.TextBox _TextBox = newTextBox();
    publicstring Caption
    {
    get { return _Label.Text; }
    set { _Label.Text = value; }
    }
    publicstring Text
    {
    get { return _TextBox.Text; }
    set { _TextBox.Text = value; }
    }
    protectedoverridevoid CreateChildControls()
    {
    this.Controls.Clear();
    this.Controls.Add(_Label);
    this.Controls.Add(new System.Web.UI.LiteralControl("&nbsp;:&nbsp;"));
    this.Controls.Add(_TextBox);
    }
    protectedoverridevoid Render(HtmlTextWriter writer)
    {
    CreateChildControls();
    base.Render(writer);
    }
    }
    }
    
    Un fichier default.aspx à placer à la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default" %>
    <%@RegisterNamespace="IHM"TagPrefix="IHM" %>
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <htmlxmlns="http://www.w3.org/1999/xhtml">
    <headrunat="server">
    <title>Page sans titre</title>
    </head>
    <body>
    <formid="form1"runat="server">
    <IHM:MonControlid="tst"runat="server"Caption="Voici un caption"Text="Voici un contenu">
    </IHM:MonControl></form>
    </body>
    </html>
    
    Michaël LEBRETON - Developpeur / Formateur indépendant
    http://www.netkoders.com

Discussions similaires

  1. Définir des propriétés spécifiques sur un contrôle
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/03/2007, 19h00
  2. Réponses: 4
    Dernier message: 16/10/2006, 14h12
  3. Perte de la propriété Activé d'un contrôle
    Par Gabout dans le forum Access
    Réponses: 8
    Dernier message: 22/07/2006, 19h15
  4. Réponses: 9
    Dernier message: 15/07/2006, 12h18
  5. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo