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

VB.NET Discussion :

PropertyGrid et lecture fichier XML


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Par défaut PropertyGrid et lecture fichier XML
    Bonjour à tous,
    En Préambule, je précise : débutant...
    J'alimente un propertygrid avec un fichier XML; tout se passe normalement.
    L'objectif est de permettre à l'utilisateur, pour une propriété, le choix dans une liste en cas de création - modification, ou bien de saisir une valeur non encore répertoriée.
    Bref le fonctionnement classique d'un combobox bindé.
    Le problème se situe dans le chargement des valeurs proposées pour cette propriété; je n'obtiens toujours que la seule valeur lue dans mon fichier XML.
    Mes recherches sur les forums n'ont rien donné...
    Voici le 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
    44
    45
     
    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Drawing.Design
    Imports System.Xml.Serialization
     
    Public Class ListEvenement
        Inherits TypeConverter         'même comportement avec StringConverter
     
    Public Overloads Overrides Function GetStandardValuesSupported( _
                        ByVal context As ITypeDescriptorContext) As Boolean
            Return True
        End Function
     
        Public Overloads Overrides Function GetStandardValues( _
                         ByVal context As ITypeDescriptorContext) _
                      As StandardValuesCollection
            Return New StandardValuesCollection(New String() {"test1", _
                                                              "test2", _
                                                              "test3"})
        End Function
     
        Public Overloads Overrides Function GetStandardValuesExclusive( _
                   ByVal context As ITypeDescriptorContext) As Boolean
            Return False
        End Function
    End Class
     
    <Serializable()> _
    Public Class Calendrier
     
    Private VCalEvnt As String
     
        <TypeConverter(GetType(ListEvenement)), BrowsableAttribute(True), _
            Description("Nom de l'évènement"), Category("Evènement"), DisplayName("Evènement"), _
            Editor(GetType(MultilineStringEditor), GetType(UITypeEditor)), _
            XmlAttribute()> _
            Public Property CalEvnt() As String
            Get
                Return VCalEvnt
            End Get
            Set(ByVal value As String)
                VCalEvnt = value
            End Set
        End Property
    Pour le chargement dans le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub CalBS_CurrentChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalBS.CurrentChanged
    'PG = PropertyGrid  -  BS = BindingSource        
    CalPG.SelectedObject = CalBS.Current
        End Sub
    Si quelqu'un peut m'orienter... Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je pense qu'il faut que tu définisses un éditeur spécifique pour la propriété concernée. Pour cela il faut hériter de la classe UITypeEditor, et appliquer l'attribut EditorAttribute sur la propriété.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Par défaut
    Merci pour ta réponse Tomlev.
    J'ai tenté d'implémenter la solution via les liens que tu as indiqué, mais sans succès.
    N'y aurait-il pas une possibilité lors du chargement du formulaire de préciser, pour le propertygrid, une liste de valeurs?
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CalPG.BrowsableAttributes.Item(0)
    mais je ne parviens pas à effectuer le setting des valeurs.
    Mer

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par manrc Voir le message
    N'y aurait-il pas une possibilité lors du chargement du formulaire de préciser, pour le propertygrid, une liste de valeurs?
    Seulement avec la solution que je t'ai indiquée... désolé

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Par défaut
    Merci encore de tes efforts....
    Je vais sans doute m'orienter vers un autre contrôle que le propertygrid.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Par défaut trouvé...
    Pour ceux que cela intéresserait, voici comment j'ai procédé pour résoudre (ou contourner?) le problème.
    Rappel : l'objectif est d'alimenter une dropdown liste dans une propriété d'un propertygrid, avec pour source des attributs issus d'un fichier XML, et de permettre à l'utilisateur de rajouter de nouvelles données, que l'on retrouve dans la liste après chaque saisie.
    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
     
    Public Class EvtSelEditor
        Inherits ObjectSelectorEditor
     
        Public Overloads Overrides Function GetEditStyle( _
        ByVal context As ITypeDescriptorContext) _
        As UITypeEditorEditStyle
     
            Return UITypeEditorEditStyle.DropDown
        End Function
     
        Protected Overloads Overrides Sub FillTreeWithData( _
            ByVal selector As Selector, _
            ByVal context As ITypeDescriptorContext, _
            ByVal provider As IServiceProvider)
     
            selector.Nodes.Clear()
            Dim XDoc As XDocument = XDocument.Load("Mon document.xml")
            Dim evt = (From elt In XDoc.Descendants("Element")  _
            Select elt.Attribute("MonAttribut").Value).ToArray
            For i = 0 To UBound(evt)
                selector.AddNode(evt(i), evt(i), Nothing)
            Next
        End Sub
    End Class
    Puis pour la propriété :
    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
     
    <Serializable()> Public Class Calendrier
         Private VarCalEvnt As String
     
        <Description("Nom de l'évènement"), Category("Evènement"), _ 
          DisplayName("Evènement"),Editor(GetType(EvtSelEditor), _ 
          GetType(UITypeEditor)),  XmlAttribute()> _
          Public Property CalEvnt() As String
            Get
                Return VarCalEvnt
            End Get
            Set(ByVal value As String)
                VarCalEvnt = value
            End Set
        End Property
    Je ne sais si c'est très orthodoxe, mais dans mon cas, ça fonctionne...
    Si cela peut aider...

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

Discussions similaires

  1. lecture fichier XML
    Par bhahmed dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/09/2006, 08h40
  2. [C#-XML] - Problème de lecture fichier XML
    Par Gloups dans le forum Windows Forms
    Réponses: 9
    Dernier message: 08/08/2006, 00h40
  3. Lecture fichier xml aux caracteres accentués
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 13/02/2006, 19h45
  4. Réponses: 3
    Dernier message: 09/12/2005, 17h42
  5. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11

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