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

C# Discussion :

Conseil app.config ou fichier XML [Débutant]


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Conseil app.config ou fichier XML
    Bonjour,

    Je commence une belle aventure qui la programmation en C# WPF (2 semaines) et j'ai besoin de conseil et orientation car mes recherches ainsi que ma compréhension autonome a ces limites !
    Je sais que ma route seras longue mais je suis prêt a arpenter les chemins semé d’embûche !

    Le but de ma solution est de lancer un fichier .ICS (iCalendar):

    -une combobox avec une liste de nom de fichier ics ou le Nom Prénom de mes utilisateurs

    -un bouton qui exécute le fichier ICS (récupération de l'URL) en rapport avec l' ITEM sélectionné dans la combobox

    L'idée d'un fichier de config est d'afficher que les calendriers utilisé par les groupes d'utilisateurs (4 donc 4 fichiers de config différent)

    J'ai commencé en WinForm avec une combo qui liste les fichiers dans un dossier et un bouton qui exécute ça fait le taff mais c'est pas top

    Exemple en WinForm:
    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
     
    private void button1_Click(object sender, EventArgs e)
            {
     
                if (comboBox1.SelectedIndex == -1)
                {
                    MessageBox.Show("You must select a conversion type", "Error");
                }
                else
                {
                    Process OpenFile = new Process();
                    OpenFile.StartInfo.FileName = comboBox1.SelectedItem.ToString();
                    OpenFile.Start();
                }
                Close();
                }
     
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                comboBox1.Items.AddRange(Directory.GetFiles(@"C:\cool"));
    }
    Mes questions sont qu'est ce que je doit utiliser comme fichier de config pour pouvoir Afficher un text (NOM) dans une combobox et un bouton qui exécute l'ICS lié a la sélection(UNC).

    Un peu comme ça:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <sectionGroup name="MonGroupe">
          <section name="NOM" type="System.Configuration.NameValueSectionHandler" />
          <section name="UNC" type="System.Configuration.DictionarySectionHandler" />
        </sectionGroup>
      </configSections>
      <MonGroupe>
        <NOM>
          <add key="cle1" value="Antoine" />
          <add key="cle2" value="Olivier" />
          <add key="cle3" value="Francis" />
        </NOM>
        <UNC>
          <add key="id1" value="c:\cool\test.txt" />
          <add key="id2" value="c:\cool\test1.txt" />
          <add key="id3" value="c:\cool\test2.txt" />
        </UNC>
      </MonGroupe>
    </configuration>
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je ne comprend pas trop la question.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    effectivement pas très claire en me relisant....

    Je cherche un conseil ou une direction a suivre pour réaliser une appli qui exécute un fichier ICS avec un fichier de configuration (XML,app.config, autre) où je renseigne le Nom des Personnes et les liens des fichier.ICS.

    Une combobox>sélection Dupont> Click Bouton>lance c:\dupont.ics

    Mais je ne sais pas trop quoi utilisé un fichier XML ou app.config et quel instruction choisir.

    Pour le moment j'essai avec un fichier XML et avec Binding ItemsSource,Value.... j'affiche mes nom mais je n'arrive pas a lancer mes fichiers ça bloque a openfile.start()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="utf-8" ?>
    <import_ics>
      <files>
        <name url="c:\Dupont.ics">Dupont</name>
      </files>
      <files>
        <name url="c:\Dupond.ics">Dupond</name>
      </files>
    </import_ics>
    et une combobox qui affiche Dupont,Dupond etc.... et un bouton qui lance le lien dans la value "url" de l'item selectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Window.Resources> <XmlDataProvider x:Key="xmlNodeList" Source="XMLFile1.xml" XPath="/breakfast_menu/food/name"/></Window.Resources>
     
            <ComboBox x:Name="comboBox1" SelectionChanged="comboBox1_SelectionChanged"
     
    ItemsSource="{Binding Source={StaticResource xmlNodeList}}" SelectedValue="{Binding XPath=@url}"/>
    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
     
    private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                ComboBoxItem cbItem = comboBox1.SelectedItem as ComboBoxItem;
                if (cbItem == null)
                {
                    cbItem = comboBox1.ItemContainerGenerator.ContainerFromItem(comboBox1.SelectedItem) as ComboBoxItem;
                }
     
    private void button_Click_1(object sender, RoutedEventArgs e)
            {
                if (comboBox1.SelectedIndex == -1)
                {
                    MessageBox.Show("Vous devez séléctionné un calendrier", "Error");
                }
                else
                {
                    string path = @"c:\";
                    Process OpenFile = new Process();
                    OpenFile.StartInfo.FileName = comboBox1.SelectedValuePath.ToString(); 
                    OpenFile.Start();
                }
                Close();
            }
     
            }

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Si le fichier doit être embarquer avec le programme je pencherai pour du xml ou csv même.
    Je ne sais pas si "app.config" peut être emmené avec, c'est plutôt pour des données utilisateur/modifiable ?

    Je verrai la structure du xml comme ceci pour ma part

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8" ?>
    <import_ics>
      <items>
        <name>Dupont</name>
        <url>c:\Dupont.ics</url>
      </items>
      <items>
        <name>Dupond</name>
        <url>c:\Dupond.ics</url>
      </items>
    </import_ics>

    Je ne maitrise pas trop les binding mais cela me parait "trop" puissant/disproportionné pour ce que tu souhaite faire.

    Voici un exemple de ce que tu veux faire avec un combobox.
    Code c# : 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
            // Bouton pour ajouter les items dans la combobox
            private void button_AddItems_Click(object sender, EventArgs e)
            {
                // Lire les données et les ajouter à la combobox, sous forme d'object "item"
                comboBox1.Items.Add(new item() { Name = "Dupont", Url = @"c:\Dupont.ics" });
                comboBox1.Items.Add(new item() { Name = "Dupond", Url = @"c:\Dupond.ics" });
     
                // Définit la propriété à afficher
                comboBox1.DisplayMember = "Name";
            }
     
     
            // Bouton pour afficher l'url associée
            private void button_Affiche_Click(object sender, EventArgs e)
            {
                // Converti l'object sélectionné en object "item"
                item i = (item)comboBox1.SelectedItem;
     
                // Affiche l'Url associé
                MessageBox.Show(i.Url);
            }
     
            // Class item
            public class item
            {
                public string Name { get; set; }
                public string Url { get; set; }
            }

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Je me pose une question :

    Si la combo affiche la liste des noms, et que les fichiers sont nommés <nom>.ics pourquoi ne pas simplement afficher dans la combo la liste des fichiers sans l'extension ?
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    J'imagine que ce n'est qu'un exemple.

  7. #7
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Tout d'abord merci du conseil et de l'exemple du code qui m'a permis de comprendre un peu le fonctionnement.

    Cela m'a grandement aidé !!
    L'idée de charger le combo avec un bouton est nickel car j'ai en faite 3 emplacements de calendrier (Salles, prof, Classes) lié a un prof etc etc

    L'apli fait le taf nickel, me reste a ajouter une vérification d'un lecteur réseaux si il existe ou pas avec un message d'erreur et ce seras suffisant.

    PS: Si vous avez des conseils pour optimiser je suis preneur

    Encore MERCI ericlm128 !!

    Voici le résultat avec le fichier xml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version="1.0" encoding="utf-8" ?>
    <import_ics>
      <items>
        <name>Dupont</name>
        <url>C:\Dupont.txt</url>
      </items>
      <items>
        <name>Dupond</name>
        <url>C:\Dupond.txt</url>
      </items>
    </import_ics>
    Puis le reste :

    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
     
    // Class item
        public class item
            {
                public string Name { get; set; }
                public string Url { get; set; }
            }
     
            private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
     
                }
            private void button_Click(object sender, RoutedEventArgs e)
            {
                //Vide le comboBox
                comboBox.Items.Clear();
     
                XmlDocument xml = new XmlDocument();
                xml.Load("XMLFile1.xml");//Chemin du fichier pour charger celui-ci
     
                XmlNodeList xnList = xml.SelectNodes("/import_ics/items"); //Select les nodes
                foreach (XmlNode xn in xnList)
                {
                    comboBox.Items.Add(new item() { Name = xn["name"].InnerText, Url = xn["url"].InnerText }); // Ajoute les donnés au combobox, sous forme d'object "item"
     
                    // Définit la propriété à afficher
                    comboBox.DisplayMemberPath = "Name";
                }
            }
     
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                // Converti l'object sélectionné en object "item"
                item i = (item)comboBox.SelectedItem;
     
                // Execute l'Url associé
                //MessageBox.Show(i.Url);
                Process OpenFile = new Process();
                OpenFile.StartInfo.FileName = i.Url; 
                OpenFile.Start();
            }

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Ça fait plaisir

  9. #9
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Tu peux éventuellement mettre dans le app.config l'url du fichier, de sorte que tu pourras distribuer ton application avec des valeurs par défaut mais il sera facile de s'adapter si tu as besoin de déplacer le fichier source. Si tu as le temps de travailler dessus tu pourrais même partir de l'idée de configurer un fournisseur, qui pourra au choix récupérer les données d'un fichier, d'une base de données, d'une url, etc...

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

Discussions similaires

  1. Conseil ecriture d'un fichier XML
    Par bebone dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/07/2007, 08h43
  2. [VB.Net] Fichier app.config
    Par tomnie dans le forum Windows Forms
    Réponses: 24
    Dernier message: 28/03/2006, 10h33
  3. [vb.net][app.config] ou se trouve le fichier de config?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/02/2006, 14h22
  4. Lecture d'un fichier XML de config avec Java
    Par cofy dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 31/01/2006, 15h54
  5. Réponses: 5
    Dernier message: 25/07/2005, 10h17

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