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 :

Problème avec un fichier xml et un pictureBox


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Problème avec un fichier xml et un pictureBox
    Bonjour à tous,
    j'ai un petit problème qui m'empêche de continuer mon application,qui va me permettre de gérer mes jeux (bref rien d'extraordinaire).
    Le problème arrive lorsque je choisis une photo pour le jeux.
    je remplis les différent textbox et je sélectionne la photo.
    j'appuie sur le bouton ajouter et tous fonctionne.
    lorsque je ferme mon applic et que je la redémarre,je constate que les données n'ont pas été écrites dans le fichier.
    Le problème vient du File.copy();
    Lorsque je supprime cette ligne,mes données sont bien écrites.
    je ne vois pas le lien avec le fichier xml.
    si quelqu'un peut m'aider!
    voici le code

    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
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Xml;
    using System.Xml.XPath;
     
    namespace Xml
    {
        public partial class Form1 : Form
        {
            XmlDocument doc;
            string path = "C:\\Documents and Settings\\Maramorosz johnny\\Mes documents\\Visual Studio 2008\\Projects\\open\\open\\bin\\Debug\\";
     
     
     
            public Form1()
            {
                InitializeComponent();
                doc = new XmlDocument();
                initialiseListe();
            }
     
     
     
            private void initialiseListe()
            {
                //methode qui initialise la liste des jeux
                listBox1.Items.Clear();
                doc.Load("liste.xml");
                XmlNodeList liste = doc.GetElementsByTagName("titre");
                foreach (XmlNode node in liste)
                    listBox1.Items.Add(node.InnerText);
            }
     
     
     
            private void button1_Click(object sender, EventArgs e)
            {
                //Le fichier xml existe déjà,cette partie permet d'ajouter un jeu
                string texte = "Le jeu a été ajouté!";
                XmlElement newjeux = doc.CreateElement("jeux");
                XmlElement newTitre = doc.CreateElement("titre");
                newTitre.InnerText = textBox1.Text;
                string titre = textBox1.Text;
                newjeux.AppendChild(newTitre);
                XmlElement newEditeur = doc.CreateElement("editeur");
                newEditeur.InnerText = textBox2.Text;
                newjeux.AppendChild(newEditeur);
                XmlElement newGenre = doc.CreateElement("genre");
                newGenre.InnerText = textBox3.Text;
                newjeux.AppendChild(newGenre);
                XmlElement newResume = doc.CreateElement("resume");
                newResume.InnerText = richTextBox1.Text;
                newjeux.AppendChild(newResume);
                doc.DocumentElement.AppendChild(newjeux);
                XmlTextWriter wrt = new XmlTextWriter("liste.xml",Encoding.UTF8);
                wrt.Formatting = Formatting.Indented;
                doc.WriteContentTo(wrt);
                wrt.Close();
                message(texte);
                //je copie l'image sélectionner dans le repertoire debug
                File.Copy(openFileDialog1.FileName, path + titre + ".jpeg"); 
            }
     
     
     
            private void message(string texte)
            {
                //réinitialise la liste après un ajout,une mise à jour ou suppression
                MessageBox.Show(texte);
                textBox1.Clear();
                textBox2.Clear();
                textBox3.Clear();
                richTextBox1.Clear();
                initialiseListe();
            }
     
     
     
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
     
                string verif = "liste/jeux[titre='" + listBox1.SelectedItem.ToString() + "']";
                XmlNode node = doc.SelectSingleNode(verif);
                textBox1.Text = node["titre"].InnerText;
                textBox2.Text = node["editeur"].InnerText;
                textBox3.Text = node["genre"].InnerText;
                richTextBox1.Text = node["resume"].InnerText;
            }
     
     
     
            private void button2_Click(object sender, EventArgs e)
            {
                //mise à jour dans le fichier xml
                string texte = "Le jeu est mis à jour!";
                string verif = "liste/jeux[titre='" + listBox1.SelectedItem.ToString() + "']";
                XmlNode node = doc.SelectSingleNode(verif);
                if (node["titre"].InnerText != textBox1.Text)
                    node["titre"].InnerText = textBox1.Text;
                else
                    if (node["editeur"].InnerText != textBox2.Text)
                        node["editeur"].InnerText = textBox2.Text;
                    else
                        if (node["genre"].InnerText != textBox3.Text)
                            node["genre"].InnerText = textBox3.Text;
                        else
                            if (node["resume"].InnerText != richTextBox1.Text)
                                node["resume"].InnerText = richTextBox1.Text;
                doc.DocumentElement.ReplaceChild(node, node);
                doc.Save("liste.xml");
                message(texte);
            }
     
     
     
            private void button3_Click(object sender, EventArgs e)
            {
                //suppression du jeu dans le fichier xml
                string texte = "Le jeu a été supprimé!";
                string verif = "liste/jeux[titre='" + listBox1.SelectedItem.ToString() + "']";
                XmlNode node = doc.SelectSingleNode(verif);
                doc.DocumentElement.RemoveChild(node);
                doc.Save("liste.xml");
                message(texte);
            }
     
            private void pictureBox1_Click(object sender, EventArgs e)
            {
                //selection de l'image
                DialogResult r = openFileDialog1.ShowDialog();
                if (r == DialogResult.OK)
                    pictureBox1.ImageLocation = openFileDialog1.FileName;
            }
     
     
     
        }
    }

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Quand tu laisses le File.Copy et que tu sauvegarde, il n'y aura pas un fichier liste.xml qui serai crée dans le même dossier que l'image que tu as sélectionné ?

    ps. Utilise une balise [CODE] pour entourer ton code la prochaine fois ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    tu as raison,je viens de le remarquer.
    un fichier est bien crée,bizarre!

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Non ce n'est pas bizarre, c'est simplement que tu utilises comme nom de fichier "liste.xml" et pas "C:\...\liste.xml". C'est donc un chemin relatif au dossier actuel (Environment.CurrentDirectory) et celui ci change avec les OpenFileDialog et compagnie.

    Donc déjà, à la place de path = "...", fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    string path = null;
     
    ...
    public Form1()
    {
       path = Path.GetDirectoryName(Application.ExecutablePath);
       ...
    }
    ça c'est parce qu'il ne faut pas coder en dur des chemins dans une application (si tu la bouges ... t'es mort).

    Ensuite, à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlTextWriter wrt = new XmlTextWriter("liste.xml",Encoding.UTF8);
    fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlTextWriter wrt = new XmlTextWriter(Path.Combine(path,"liste.xml"),Encoding.UTF8);
    (pour enregistrer liste.xml dans le dossier debug).

    Et rajoute ce genre de chose à chaque fois que tu as utiliser "liste.xml" tout seul.

    Enfin, évite les path + titre + ".jpeg", fais plutot Path.Combine(path,titre + ".jpeg").

    voilà, ça devrait marcher.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    ça marche bien comme ça,un grand merci à toi!
    génial!

  6. #6
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    La prochaine fois, pense au

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

Discussions similaires

  1. problème avec les fichiers xml
    Par tunwim dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2013, 15h22
  2. problème avec output fichier XML
    Par soumti84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/04/2009, 18h13
  3. problème avec un fichier xml
    Par jeanfrancois dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 05/10/2006, 15h56

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