Récupération de données avec Windows Forms
Stapled
Messages postés
34
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
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
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:
- Récupération de données avec Windows Forms
- Clé de produit windows 10 gratuit - Guide
- Montage video windows - Guide
- Windows ne démarre pas - Guide
- Windows movie maker - Télécharger - Montage & Édition
- Restauration systeme windows 10 - Guide
2 réponses
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
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
Avec ce fichier
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
Et dans le formulaire, pour afficher sur une listBox
[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");
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 :
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();
}
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.
Mais pour te montrer, il faudrait un exemple de ton fichier
(c'est du jeu de rôle)