Récupération de données avec Windows Forms

Fermé
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018 - Modifié le 5 janv. 2018 à 15:22
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 11 janv. 2018 à 11:49
Bonjour,

Je suis en train de développer une application sur Windows Forms comprenant de la sauvegarde données sur fichiers ini.
Ces fichiers contiennent des fiches de personnages (nom, age, caractéristiques etc.).
J'aimerai dans un Form, récupérer ces données afin que les noms et prénoms soient affichées dans une listview.

Avez-vous une idée pour y arriver ?

Merci d'avance,

Stapled
A voir également:

2 réponses

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
5 janv. 2018 à 21:05
Bonsoir, un fichier ini c'est désuet et ça servait à sauvegarder la configuration du logiciel, pas les données métiers.
Pour la configuration du logiciel, Visual Studio intègre directement un fichier spécifique (au format xml),
vois ici
https://cdiese.fr/fichier-de-configuration-en-net-en-10-min/
ou là
https://nico-pyright.developpez.com/tutoriel/vc2005/configurationsectioncsharp/

Pour les données métiers, c'est dans une base de données qu'il faut les stocker, tu peux la constituer avec un fichier texte (csv, xml, json...) si tu as peu de données. Tu peu aussi utiliser excel. Enfin tu peux te servir d'une "vraie" base de données (Access, sqlserver, mysql etc...).

Pour le xml, ma préférence va à LinqToXml https://codes-sources.commentcamarche.net/faq/11196-linq-to-xml-c-et-vb-net
Pour Excel, tu peux te servir de l'API https://codes-sources.commentcamarche.net/source/50624-piloter-excel-via-microsoft-office-interop-excel mais ça oblige à disposer d'Excel sur le PC et c'est un peu long à l'exécution car tu lances excel et tu le pilotes pas à pas. Sinon tu peux écrire directement en openxml pour le format xlxs https://codes-sources.commentcamarche.net/source/102062-excel-avec-openxml

Pour les bases de données, il y a des exemples sur le site
https://codes-sources.commentcamarche.net/source/list/c-net-13/last

0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
7 janv. 2018 à 00:56
Bonsoir,

Je suis conscient que les fichiers ini sont désuets mais j'aimerai quand même savoir comment afficher certaines données enregistrées dans un fichier ini dans une listview.
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
7 janv. 2018 à 09:58
De la même façon que n’importe quel fichier texte.
Mais pour te montrer, il faudrait un exemple de ton fichier
0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
7 janv. 2018 à 14:55
Oui bien sûr :

(c'est du jeu de rôle)
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
7 janv. 2018 à 15:35
T’aurais pu copier coller le texte, ça m’aurait évité de devoir le retaper de mon côté
0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
7 janv. 2018 à 15:47
Désolé
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
7 janv. 2018 à 17:37
Avec ce fichier
[Personnage]
Nom=Organ
Prenom=Stapled
Race=Humain
Age=42
Description=
Arme=
Classe=Sorcier
Male=Femelle
Femme=Male
Autre=Autre
[Personnage]
Nom=Toto
Prenom=Tata
Race=Elfe
Age=275
Description=Très beau
Arme=Epée
Classe=Guerrier
Male=Male
Femme=Femelle
Autre=N'importe quoi


Je ne sais pas comment tu as écrit ta classe Personnage alors j'ai fait un truc bateau, y'a un int et un enum pour l'exemple

    class PersonnageStapled
    {
        public string Nom { get; set; }

        public string Prenom { get; set; }

        public string Race { get; set; }

        public int Age { get; set; }

        public string Description { get; set; }

        public string Arme { get; set; }

        public Classe Classe { get; set; }

        public string Sexe { get; set; }

        public string Conjoint { get; set; }

        public string Autre { get; set; }


        public override string ToString()
        {
            return string.Format("Je m'appelle {0} {1}", Nom, Prenom);
        }

        public static List<PersonnageStapled> LireIni(string FileName)
        {
            List<PersonnageStapled> lesPersos = new List<PersonnageStapled>();

            //J'utilise une méthode pas forcément optimisée mais accessible pour un débutant
            string toutLeTexte = File.ReadAllText(FileName);//je charge tout le fichier
            string[] persos = toutLeTexte.Split(new[] { "[Personnage]\r\n" },StringSplitOptions.RemoveEmptyEntries);//je découpe le texte par le mot clé personnage

            foreach(string perso in persos)//j'itère chaque personnage
            {
                string[] lesLignes = perso.Split(new[] { "\r\n" }, StringSplitOptions.None);//je découpe par ligne

                //je pars du principe que le fichier est toujours parfaitement bien formaté (c'est l'un des inconvenients de ce format...)
                PersonnageStapled nouveauPerso = new PersonnageStapled();
                nouveauPerso.Nom = lesLignes[0].Split('=')[1];//je découpe par le = et je prends le 2eme
                nouveauPerso.Prenom = lesLignes[1].Split('=')[1];
                nouveauPerso.Race = lesLignes[2].Split('=')[1];
                nouveauPerso.Age = Convert.ToInt32(lesLignes[3].Split('=')[1]);//il faut convertir en int
                nouveauPerso.Description = lesLignes[4].Split('=')[1];
                nouveauPerso.Arme = lesLignes[5].Split('=')[1];
                nouveauPerso.Classe = (Classe)Enum.Parse(typeof(Classe), lesLignes[6].Split('=')[1]);//il faut convertir en Classe
                nouveauPerso.Sexe = lesLignes[7].Split('=')[1];
                nouveauPerso.Conjoint = lesLignes[8].Split('=')[1];
                nouveauPerso.Autre = lesLignes[9].Split('=')[1];

                lesPersos.Add(nouveauPerso);
            }

            return lesPersos;
        }
    }

    enum Classe
    {
        Sorcier,
        Guerrier
    }


Et dans le formulaire, pour afficher sur une listBox
listBox1.DataSource = PersonnageStapled.LireIni("test.ini");

0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
10 janv. 2018 à 14:16
Bonjour,

Désolé pour avoir tardé à répondre. Je vous remercie pour votre aide, je vais essayer de faire fonctionner ce code avec mon application.

Mon fichier ini a été construit de cette manière :

private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Text = textBox1.Text;
            comboBoxclasse.Items.Add(comboBoxclasse.Text);

            int N_ident;// n° du fichier


            do
            {
                N_ident = (new Random()).Next(0, 9999999);

            }
            while (File.Exists(Application.StartupPath + @"\personnage\" + N_ident.ToString() + ".ini"));
            Ini Data = new Ini(Application.StartupPath + @"\personnage\" + N_ident.ToString() + ".ini");

            Data.Write("Personnage", "Nom", textBox1.Text);
            Data.Write("Personnage", "Prenom", textBox2.Text);
            Data.Write("Personnage", "Race", textBox4.Text);
            Data.Write("Personnage", "Age", textBox3.Text);
            Data.Write("Personnage", "Description", textBox5.Text);
            Data.Write("Personnage", "Arme", comboBox2.Text);
            Data.Write("Personnage", "Classe", comboBoxclasse.Text);
            Data.Write("Personnage", "Male", radioButton1.Text);
            Data.Write("Personnage", "Femme", radioButton2.Text);
            Data.Write("Personnage", "Autre", radioButton3.Text);
          


            Close();

        }
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
10 janv. 2018 à 16:21
C’est quoi ce do?
Pour trouver le premier nombre disponible?
0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
10 janv. 2018 à 17:25
Oui c'est ça
0
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 928
10 janv. 2018 à 17:42
et ta classe ini elle sort d'ou?
0
Stapled Messages postés 34 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 10 janvier 2018
10 janv. 2018 à 23:12
Elle provient d'une autre page .cs intitulée IniParser.cs
Elle est lié à l'autre page avec un using.
0