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

Windows Forms Discussion :

[c#]User control : problème attribut collection (List<Button>)


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [c#]User control : problème attribut collection (List<Button>)
    Bonjour,

    J'essaie de développer un UserControl qui gère une collection de boutons (Liste typée).
    Mon premier gros problème c'est que j'arrive bien à éditer la liste de boutons (modification d'aspect, Text ...) dans le designer mais la modification ne suit pas lors de l'exécution du projet instanciant ce UC.
    Deuxième problème, l'ajout d'un bouton dans la liste je ne vois pas (ne sais pas) quel événement est levé du coup je ne peux pas mettre mon UC à jour.

    J'avoue que je nage pas mal, j'ai vu 2 ou 3 articles sur la classe "ControlDesigner", mais je n'arrive pas hériter de cette classe, visual studio (2010 professionnal) ne trouve pas le type ou l'espace de nom.

    J'ai déjà ajouter les namespaces suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    using System.Windows.Forms.Design;
    using System.ComponentModel.Design;
    A priori il faudrait ajouter la référence "System.Designer.dll" au projet mais elle ne figure pas dans la liste des réfences .Net, je la trouve dans le répertoire :
    "C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" mais l'ajout ne fonctionne pas
    Impossible d'afficher ce projet dans l'explorateur d'objets, car il n'est pas disponible ou pas encore généré. Verifier que le projet est disponible et généré.
    Pourriez-vous m'orienter un peu ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut ControlDesigner,System.Design
    bonjour
    Sous VS 2008 c'est System.Design.dll et non System.Designer.dll.Elle apparait dans les references du panneau .Net.
    Dans divers Blog MSDN ce probleme est signale.
    Car pour apparaitre dans le panneau References cette dll doit figurer dans le GAC.
    Ajoute la au GAC comme suit
    Ouvres 2 sessions Explorateur Windows.
    Glisse (drag-drop) la dll de ton repertoire C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" vers C:\WINDOWS\assembly .
    C:\WINDOWS\assembly est normalement le repertoire par defaut GAC (du moins pour VS 2008).

    voici le code maintenant l'utilisation de la ControlDesigner:
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    'User Control
    Imports System.ComponentModel
    'noter l'attribut du UserControl
    <Designer(GetType(UserCtrlHorlogeDesigner))> _
    Public Class UserControlHorloge
     
        Private m_face As ClockFace
        Public Property Face() As ClockFace
            Get
                Return m_face
            End Get
            Set(ByVal value As ClockFace)
                m_face = value
            End Set
        End Property
     
    End Class
    Public Enum ClockFace
        Analog
        Digital
    End Enum
     
    'Classe ControlDesigner du User Control
    Imports System
    'voici l'imports
    Imports System.Windows.Forms.Design
    Imports System.ComponentModel
    Imports System.Drawing.Drawing2D
     
    Public Class UserCtrlHorlogeDesigner
        Inherits ControlDesigner
        Dim monShowBorder As Boolean = True
        Dim objControlHorloge As UserControlHorloge = Nothing
        Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent)
            MyBase.Initialize(component)
            ' obtient une reference au UserControl
            objControlHorloge = CType(component, UserControlHorloge)
     
        End Sub
        Protected Overrides Sub OnPaintAdornments(ByVal pe As System.Windows.Forms.PaintEventArgs)
            MyBase.OnPaintAdornments(pe)
            ' Appeler Classe Base
            MyBase.OnPaintAdornments(pe)
            'borders Invisible si Face Horloge = Digital ou ShowBorder n'est pas mis
            If Not (monShowBorder) Or objControlHorloge.Face = ClockFace.Digital Then
                Exit Sub
            End If
     
            ' 
            If objControlHorloge.Face = ClockFace.Digital Then Exit Sub
     
            ' Dessine borders
            Dim g As Graphics = pe.Graphics
            Dim monPen As Pen = New Pen(Color.Gray, 1)
            monPen.DashStyle = DashStyle.Dash
            g.DrawRectangle(monPen, 0, 0, (objControlHorloge.Width - 1), (objControlHorloge.Height - 1))
            monPen.Dispose()
     
        End Sub
        ' Founit une implementation de ShowBorder pour 
        ' memoriser propriete monShowBorder 
        ' Pour developpeur (inaccessible au run-time) 
        Property ShowBorder() As Boolean
            Get
                Return monShowBorder
            End Get
            Set(ByVal value As Boolean)
                monShowBorder = value
                objControlHorloge.Refresh()
            End Set
        End Property
     
    End Class
    bon code....

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour cette réponse !

    J'ai effectué la manipulation pour ajouter System.design (et non System.designer comme je l'avais écrit : faute d'inattention), malheureusement cette maudite DLL n'apparait toujours pas dans le panneau de référence malgré un redémarrage complet du système.

    Bon en tout cas maintenant j'ai des pistes, je vais creuser un peu, merci encore

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut NET4 Full framework, .NET Framework 4 Client Profile RTM
    bonjour sebpp
    Encore un blog MSDN et tant pis pour notre gouverne sebpp.
    J'ai oublie de te dire aussi qu'il faut quand on fait du developpement de cibler NET4 Full framework .
    Or ca c'est penible mais moi je suis habitue,et je ne lache pas facilement la proie pour l'ombre.
    Surement tu as cette emmerdante version de .NET Framework 4 Client Profile RTM(run-time redistribuable version compacte optimise pour les pre-requis au moment de deployer l'appli).
    Pour developpeur build ton projet avec target plateforme ..NET Framework 4.
    Si tu n'as pas cette option telecharge sur le site MSDN (gratuit) le .NET Framework 4 Full
    ici le lien (version setup standalone-autonome complete)
    http://www.microsoft.com/downloads/d...f-b21f31ab88b7
    bon code....

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Excellent !

    C'était bien un problème de Framework cible

    Merci infiniment MABROUKI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. User Control: problème
    Par jacquesprogram dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 27/09/2014, 19h38
  2. [WebForms][User Controls] Problème pour accéder aux CSS
    Par BouB dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/12/2006, 16h35
  3. [C#] Problème de Collection de controles...
    Par kunfuka dans le forum ASP.NET
    Réponses: 10
    Dernier message: 08/12/2005, 16h52
  4. [C#]liste de choix dans une propriété d'un user control
    Par LeDeveloppeurDotNet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/10/2005, 12h41
  5. [MFC]List Control : problème d'affichage
    Par gege2061 dans le forum MFC
    Réponses: 5
    Dernier message: 25/07/2005, 13h40

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