Rectangle avec control ? [Résolu]

micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 7 févr. 2013 à 22:26 - Dernière réponse :  mickbristol78
- 25 févr. 2013 à 09:55
Hello,
J'ai quelques bases en c# mais je suis loin d'etre un as.. bref je bloque sur quelque chose qui devrait etre simple pourtant...

Disons que j'ai une Form avec seulement un button et 2 textbox,
je voudrais, quand j'appui sur le button, prendre les 2 valeurs entrées dans les textbox, et dessiner un rectangle sur la Form avec ces 2 coordonnees (jusqu'a la je sais faire).
Mais je voudrais aussi ajouter un control, pour que lorsque la sourie passe dessus ce rectangle, qu'il m'affiche une messagebox.show("rect1"); (et ca je n'y arrive pas)

je voudrais pouvoir repeter l'operation avec autant de rectangle que je veux, et toujours pouvoir afficher mes messages, correspondant a chaque rectangle.

Merci pour vos idées... et n'hesitez pas d'ecrire des examples... je suis pas tres fort et je m'embrouille rapidement si je suis noyé dans trop de vocabulaire...

Merci encore
Afficher la suite 

Votre réponse

20 réponses

Meilleure réponse
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 13 févr. 2013 à 22:58
3
Merci
Bonsoir,

l'objet sender d'une méthode événementielle contient l'objet qui a généré l'événement.

donc là
        void lbl_MouseEnter(object sender, EventArgs e)
        {
            label1.Text = "mouse has entered label number " + ID.ToString();
        }


sender est le label survolé, pour avoir son nom il suffit de caster sender correctement

        void lbl_MouseEnter(object sender, EventArgs e)
        {

            label1.Text = "mouse has entered label number " + ((Label)sender).Name;
        }

Whismeril

Merci Whismeril 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 122 internautes ce mois-ci

Commenter la réponse de Whismeril
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 8 févr. 2013 à 13:00
0
Merci
Bonjour,

je pense que tu devrais te créer un contrôle perso qui à comme dessin un rectangle.
Ensuite tu crées une méthode qui prends un object nommé sender en paramètres, qui affiche via messagebox le nom de sender.


A l'appui sur le bouton tu ajoutes dynamiquement une instance du contrôle au formulaire.
Si tu ne sais pas comment faire, cherche "InitialiseCompoment" ou un truc comme ça dans le constructeur du formulaire.
Fais clickdroit/atteindre la définition. Tu verras tout le code que VS écrit quand tu ajoutes un composant par l'interface visuelle.

Une fois ajouté, tu associes l'événement mousemouve de l'instance du controle. Pour ça tu écris:
monControle.Mo

//à ce moment normalement VS te propose MousMove dans la liste déroulante de Intellisense, tu appuies sur tab et il va te proposer de créer une méthode et de l'associer, tu peux faire deux fois tab et ensuite tu remplaces le nom de la méthode automatique par celui de celle que tu as prévu.

Whismeril
Commenter la réponse de Whismeril
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 8 févr. 2013 à 13:03
0
Merci
Ha zut,

à ce moment normalement VS te propose MousMove dans la liste déroulante de Intellisense, tu appuies sur tab puis += et il va te proposer de créer une méthode et de l'associer, tu peux faire deux fois tab et ensuite tu remplaces le nom de la méthode automatique par celui de celle que tu as prévu.


Whismeril
Commenter la réponse de Whismeril
micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 9 févr. 2013 à 02:00
0
Merci
Salut et merci pour ton aide,
j'ai passé qq heures a chercher comment faire, mais je n'y parvient toujours pas.

j'ai copié le code plus bas, je pense que je suis pas loin d'y arriver mais pour etre honete, a partir de la ligne blanche je suis un peu perdu et j'aurai du mal a justifier mes demarches...

Le truc que j'arrive pas a me faire rentrer dans la tete c'est comment creer un object avec des evenements tels que ce que je veux faire, tout ca pendant en "run-time".

Pour donner une idee de ce que je veux aboutir a faire, c'est un calendrier tableau montrant tout les mois et tout les jours de chaque mois (donc 365 cases), et creer par exemple un RDV alarm tel jour a tel mois. Une fois rentré, je veux voir mon petit rectangle representant mon RDV de tel jour. Et si je passe la souris dessus, alors je veux un text box qui m'affiche le detail du RDV.
Je veux pouvoir changer de personne et donc charger d'autre données etc.. et a la fermeture enregistrer le tout dans un XML, afin de retrouver mes données au prochain lancement de l'application.

Donc j'ai encore du boulot.. bien que pour le XML je pratique pas mal et j'y parvient petit a petit.

voici la ou j'en suis pour ce rectangle

private void button1_Click(object sender, EventArgs e)
{
drawRectangle(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
}
private void drawRectangle(int Xpos, int Ypos)
{
Graphics gs = this.CreateGraphics();
SolidBrush blueBrush = new SolidBrush(Color.Blue);
Rectangle rt1 = new Rectangle(Xpos, Ypos, 50, 50);
Pen p = new Pen(new SolidBrush(Color.Green));
gs.FillRectangle(blueBrush, rt1);

Control ctrl = new Control();
ctrl.RectangleToScreen(rt1);
ctrl.MouseMove += ctrl_MouseMove;
}
void ctrl_MouseMove(object sender, MouseEventArgs e)
{
MessageBox.Show("text");
}


merci encore
Commenter la réponse de micbristol
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 9 févr. 2013 à 10:09
0
Merci
Ce n'est pas vraiment ce à quoi je pensais, dans les barres d'icônes il y a celle qui permet d'ajouter un nouvel élément (les classes notamment), la tu peux ajouter un contrôle utilisateur, c'est un contenant un peu comme un formulaire dans lequel tu peux positionner des contrôles et gérer un comportement global.
Par contre je ne sais pas si c'est idéal dans ton cas.

J'ai posté un calendrier créé à partir d'une grille, ça pourra peut être t'aider. Depuis je l'ai un peu modifié, je tacherais de penser à la mettre à jour la semaine prochaine.


Whismeril
Commenter la réponse de Whismeril
micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 9 févr. 2013 à 19:36
0
Merci
Hello,
Je pense que je vais tourner le truc differement, je vais essayer de jouer avec la position de la sourie, et valider une zone de detection avec les coordonees.
Ca a l'air plus facile mais le probleme c'est que si je dessine un rectangle, apparement les coordonnées sont ignioré quand je passe par dessus le rectangle, surement parce que ce rectangle est au "dessus" de la Form. enfin bref faut que je cherche dans ces idees.

L'idée de ton program est semblable a la mienne, j'ai surememnt plein de chose a apprendre a l'interieur.

merci
Commenter la réponse de micbristol
soussous78 47 Messages postés mardi 21 novembre 2006Date d'inscription 5 novembre 2016 Dernière intervention - 12 févr. 2013 à 22:05
0
Merci
Voici comment je procéderais (a la volée):
public class RectangleAvecNom
    {
        public Rectangle Rect;
        public RectangleAvecNom(string coord1,string coord2)
        {
            string[] c1 = coord1.Split(';');
            string[] c2 = coord2.Split(';');
            Rect = new Rectangle(Convert.ToInt32(c1[0]), Convert.ToInt32(c1[1]), Convert.ToInt32(c2[0]), Convert.ToInt32(c2[1]));
        }
    }
public class TaClass : Form
    {
        private List<RectangleAvecNom> RAN=new List<RectangleAvecNom>();
        string affiche = null;
        Point affichePoint;
        TextBox textBox1 = new TextBox();
        TextBox textBox2 = new TextBox();
        Button button1=new Button();

        public TaClass ()
        {
            this.textBox1.Location = new System.Drawing.Point(3, 12);
            this.textBox1.Size = new System.Drawing.Size(116, 20);
            this.textBox2.Location = new System.Drawing.Point(125, 12);
            this.textBox2.Size = new System.Drawing.Size(116, 20);
            this.button1.Location = new System.Drawing.Point(248, 14);
            this.button1.Size = new System.Drawing.Size(30, 18);
            button1.Click+=new EventHandler(button1_Click);

            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
            this.MouseMove += new MouseEventHandler(BougeSouris);
        }

        void BougeSouris(object sender, MouseEventArgs e)
        {
            affiche = null;
            for(int i=0;i<RAN.Count;i++)
                if (e.X > RAN[i].Rect.X && e.X < RAN[i].Rect.X + RAN[i].Rect.Width && e.Y > RAN[i].Rect.Y && e.Y < RAN[i].Rect.Y + RAN[i].Rect.Height)
                {
                    affiche = "Rect" + i.ToString();
                    affichePoint = e.Location;
                }

            this.Invalidate();
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            try
            {
                Bitmap bmp = new Bitmap(e.ClipRectangle.Width, e.ClipRectangle.Height);
                Graphics gr = Graphics.FromImage(bmp);
                gr.FillRectangle(new SolidBrush(Color.White), e.ClipRectangle);
                foreach (RectangleAvecNom r in RAN)
                {
                    gr.DrawRectangle(new Pen(Color.Black), r.Rect);
                }
                if (affiche != null)
                    gr.DrawString(affiche, this.Font, new SolidBrush(Color.Red), affichePoint);
                e.Graphics.DrawImage(bmp, e.ClipRectangle);
                gr.Dispose();
            }
            catch { }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            RAN.Add(new RectangleAvecNom(textBox1.Text, textBox2.Text));
            this.Invalidate();
        }
    }
Commenter la réponse de soussous78
micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 13 févr. 2013 à 21:02
0
Merci
Salut et merci pour ta participation,
j'ai pas eu le temps de tester si ca donne ce que je veux faire mais je vais y passer du temps, promis.

En attendant, je suis arrivé a ecrire quelque lignes qui font a peu pres ce dont je veux, le dernier truc dont j'ai besoin, c'est de lire les coordonnées de la sourie quand je suis "au dessus" de mon rectangle.

Je m'explique, dans mon code, je dessine un label colorié en noir (a la place d'un rectangle) et ajoute dynamiquement le control MouseEnter sur chaqun des nouveaux labels dessinés.
Quand la sourie passe sur un des labels je declenche l'evenement comme prevu, mais pour pouvoir differencier le label1 du label2, je voudrais simplement identifier la position de la sourie. Le probleme c'est que les coordonnées de la sourie ne sont pas retournées quand j'ai un control au dessus de la Form.

y aurait t-il un moyen de recupérer les coordonnées de la souris, meme quand celle ci passe dessus un autre control appartenant a la Form ?

public partial class Form1 : Form
    {
        int Xpos, Ypos = 0;
        int ID = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Xpos = RectX(Convert.ToInt32(numericUpDownColumn.Value));
            Ypos = RectY(Convert.ToInt32(numericUpDownRow.Value));
            Label lbl = new Label();
            lbl.Name = "ID_" + ID.ToString();
            lbl.Top = Ypos;
            lbl.Left = Xpos;
            lbl.BackColor = Color.Black;
            lbl.Size = new System.Drawing.Size(10, 10);
            lbl.MouseEnter += lbl_MouseEnter;
            this.Controls.Add(lbl);
        }

        private int RectX(int OriginalXValue)
        {
            int offset = 0;

            if (OriginalXValue <5) offset 0;
            else if ((OriginalXValue > 5) && (OriginalXValue <10)) offset 3;
            else if ((OriginalXValue > 10) && (OriginalXValue <15)) offset 6;
            else if ((OriginalXValue > 15) && (OriginalXValue <20)) offset 9;
            else if ((OriginalXValue > 20) && (OriginalXValue <25)) offset 12;
            else if ((OriginalXValue > 25) && (OriginalXValue <30)) offset 15;
            else if ((OriginalXValue > 30) && (OriginalXValue <35)) offset 18;
            else if ((OriginalXValue > 35) && (OriginalXValue <40)) offset 21;
            else if ((OriginalXValue > 40) && (OriginalXValue <45)) offset 24;
            else if ((OriginalXValue > 45) && (OriginalXValue <50)) offset 27;
            else if ((OriginalXValue > 50) && (OriginalXValue <55)) offset 30;
            else if ((OriginalXValue > 55) && (OriginalXValue <60)) offset 33;

            return 75 + offset + (OriginalXValue * 13);
        }

        private int RectY(int OriginalYValue)
        {
            return 102 + (OriginalYValue * 16);
        }

        void lbl_MouseEnter(object sender, EventArgs e)
        {
            label1.Text = "mouse has entered label number " + ID.ToString();
        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
            label4.Text = "X: " + e.X.ToString() + "\n" + "Y: " + e.Y.ToString();
        }
        
    }
Commenter la réponse de micbristol
micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 14 févr. 2013 à 00:32
0
Merci
C'est cool ca marche, merci beaucoup je vais pouvoir avancer dans mon program.
J'avoue de pas comprendre ((Label)sender).Name; a la place de ID.ToString();
Donc je pense qu'il va falloir que je lise encore et encore, pourtant j'ai lus 10.000 tuto sur les castings
et j'ai l'impression de toujours lire les memes trucs sur les operations de base.
J'ai aussi du mal avec les (object sender, EventArgs e)
Si on me demande je dirais que le "sender" est simplement le control en question qui declenche l'evenement
et EvenArgs c'est un "parametre" de ce control.
Mais si je dois jouer et changer ces options, je suis perdu.

par exemple, comment tu appellerai cette function;
private void Methodappellee(object sender, MouseEventArgs e) 
{
     MessageBox.Show("blabla");
}


depuis une autre fonction ?
private void MethodSource
{
    Methodappellee( ?? et la je mets quoi ???);
}
Commenter la réponse de micbristol
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 14 févr. 2013 à 07:27
0
Merci
Bonjour

Si on me demande je dirais que le "sender" est simplement le control en question qui declenche l'evenement
et EvenArgs c'est un "parametre" de ce control.

Exactement en fin EvenArgs est le type du paramètre e.
e peut être de différents types ça dépend de l'objet qui génère l'événement

private void Methodappellee(object sender, MouseEventArgs e) //e est de type MouseEventArgs donc il s'agit d'une méthode liée à une événement MouseMove
{
     MessageBox.Show("blabla");
}


Si tu veux l'appeler toi même, il faut que tu lui donne un paramètre de type "object" et un de type MouseEventArgs

Methodappellee(1, new MouseEventArgs());//si sender et e ne te servent pas dans Methodappellee tu peux aussi bien envoyé un int et un MouseEventArgs vide

Label monLabel = new Label(); // si dans Methodappellee, tu as besoin d'un Label alors il faut soit que tu en inities un soit que tu te serve d'un existant
MouseEventArgs() monE = new MouseEventArgs();// idem pour e
Methodappellee(monLabel,monE);



Whismeril
Commenter la réponse de Whismeril
mickbristol78 - 14 févr. 2013 à 09:21
0
Merci
Merci beaucoup pour ta reponse et ton aide.
Ca me parait plus clair quand qq un m'explique, mais il faut bien que je pratique encore et encore.

Merci aussi de me notifier si tu mets a jour ton calendrier example. a plus tard pour certainement d'autre questions
Commenter la réponse de mickbristol78
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 14 févr. 2013 à 12:23
0
Merci
Je ne t'ai pas répondu pour le cast ce matin, je manquais un peu de temps.

Cela fait appel à deux prérequis (au moins), même si je l'ai longtemps utilisé bétément sans trop savoir le mécanisme.

1 la conversion de type, par exemple il est aisé de convertir un int en double: 1 devient 1.0, inversement selon que l'on tronque ou arrondisse 1.5 devient 1 ou 2.
Ce qui est un peu plus compliqué c'est de convertir vers ou depuis un type plus complexe (genre une classe perso). Par exemple tu crées une classe personne:
    class Personne
    {
        public string Nom { get; set; }

        public string Prenom { get; set; }
    }

on peut écrire dans cette classe le code qui va bien pour que si je lui dit:
Personne maPersonne =  "Jean, Sort";
cela soit intérprété comme il faut et crée une instance de Personne dont le prénom est Jean et le nom est Sort. Je ne vais pas aller plus loin ça n'est pas le sujet.

2 l'héritage , si tu débutes en programmation, c'est peut être une notion encore trouble mais par exemple je pourrais dériver Personne en Homme et Femme, qui garderaient les méthodes et propriétés de bases et auraient chacun des méthodes et propriétés spécifiques (un homme a toujours un nom et un prémon mais en plus il a de la barbe).

Bon revenons au cast, adméttons que tu veuilles calculer un indice de tableau (qui est un int) à partir d'une fonction qui te retourne un double:
            string[] sourceString  = new string[]
                    {
                        "January",
                        "February",
                        "March",
                        "April",
                        "May",
                        "June",
                        "July",
                        "August",
                        "September",
                        "October",
                        "November",
                        "December"};

            double monIndex = 3 / 2;//là c'est 1.5
            string moi = sourceString[(int)monIndex];// ici la syntaxe (int) veut dire convertit la variable qui suit en int par la méthode qui est programmée dans sa classe, là ça tronque l'index est 1 et le moi février


Dans le cas d'un évenement, le MouseMove peut etre généré par tout un tas de contrôles différents (Label, Texbox, Form, etc...), la variable sender doit donc pouvoir accueillir tout ce petit monde.

C'est là ou intervient l'héritage. Si je crée un Homme, je peux le stocker dans une variable Personne, parce que Personne est sa classe mère. Par contre sans cast je ne pourrais l'utilser qu'avec les outils de Personne. Donc de ma Peronne qui contient un Homme je ne peux rien faire de Barbe, pour y accéder j'utilise cette écriture:
((Homme)maPersonne).Barbe;//](Homme)maPersonne veut toujours dire convertit ce qui suit en Homme, mais pour utiliser Barbe on met un jeu de parenthèses qui engloble le cast et la variable.


Dans le cas de ton événement sender est de type object qui est la classe mère de tout C# (par exemple elle possede la méthode ToString() et tou ce qui existe en C# en hérite), et donc peut contenir tout et n'importe quoi, il faut ensuite caster pour s'en servir.


Voilà j'espère avoir été clair.

Concernant le calendrier, il me semble avoir corrigé quelques petits bigs, mais rien de plus.

Whismeril
Commenter la réponse de Whismeril
soussous78 47 Messages postés mardi 21 novembre 2006Date d'inscription 5 novembre 2016 Dernière intervention - 14 févr. 2013 à 13:47
0
Merci
Je pense que pour cela, tu ne devrais pas utiliser les controls mais plutôt dessiner sur ta form.
Dans le code que je t'ai donné, tu récupère la position de la souris dans la méthode BougeSouris.
e.X ou e.Y sont les coordonnées de la souris sur la form.
Si tes rectangles ont besoin de plus d'infos (couleurs, valeurs...). Tu peux ajouter tout ce dont tu peux avoir besoin dans la classe RectangleAvecNom.
Je pense que ce sera plus simple que d'ajouter sans cesse des controls.
Commenter la réponse de soussous78
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 14 févr. 2013 à 15:47
0
Merci
Je ne suis pas d'accord avec sousous si tu avais 10 rectangles à gérér à voir, mais dans le but de faire un calendrier il faudrait de creer un alogrithme qui retourne la date en fonction des coordonnées de la souris, sachant que tous les moi n'ont pas le même nombre de jours et que février peut en avoir 29 ça n'est pas très simple.

Creer et afficher un label par jour et récupér la date par l'evement mousemouve me parrait le plus simple.

De plus C# est un langage optimisé pour la programmation événementielle;


Whismeril
Commenter la réponse de Whismeril
mickbristol78 - 14 févr. 2013 à 16:22
0
Merci
Hello, merci encore pour le temps que tu m'accordes a m'expliquer.
J'ai lu et appris brievement le cast par les bouquins et exemples mais j'avais rarement trouver des exemples utilisant des sender, ou si j'en avais trouvé, alors je les evité car je ne les comprennais pas.
J'y vois plus clair avec ton aide, je vais donc pratiquer pour que ca rentre.

En ce qui concerne le message de Sousous, a vrai dire je pense que c'est un peu la demarche que j'adopte. Mais purement parce que en tant que novice, je vais principalement que vers les choses dont je sais faire. (pas tres bonne attitude, mais essentielle pour garder la motivation a mon gout...).

Mon code en fait charge une image au demarrage, representant un tableau avec tout les jours de l'année. Quand je click sur le bouton je dessine un label noir (representant mon rectangle) a tel position. j'y assigne un ID pour pouvoir affecter et recuperer des proprietés uniques. Ainsi de suite pour un autre rectangle etc..
Le probleme que j'avais a dessiner des formes et des rectangle, c'etait que je ne pouvais pas recuperer les coordonnées quand la sourie passait sur mon rectangle. Je pense bien qu'il y a des astuces pour y parvenir, mais encore, j'ai du me diriger vers qq chose que je comprennais plus comment faire.

Mais je suis d'accord avec Whismeril du fait que j'aimerai maitriser la POO, et donc l'utiliser autant que possible.

Je vais certainement passer plus de temps ce weekend et la semaine prochaine sur mon programme, et si vous en avez pas trop mare de m'expliquer et me corriger, alors je posterai volontier l'avancement de mon travail pour que vous puissiez m'indiquer les choses a eviter ou a ameliorer.

Merci, Tchô
Commenter la réponse de mickbristol78
soussous78 47 Messages postés mardi 21 novembre 2006Date d'inscription 5 novembre 2016 Dernière intervention - 15 févr. 2013 à 19:59
0
Merci
Ayant fait un calendrier pour le travail en c# et étant en ce moment en train de l'optimiser. Je me suis déjà posé certaines questions.
Soit passer par des labels qui d'ailleurs a été ma première pensée. soit de passer par du dessin.
Pour récupérer la date en fonction de la position du rectangle, il suffit soit de rajouter un DateTime dans la classe RectangleAvecNom, soit de calculer la date suivant la position. Ce n'est pas difficile.
Je pense pour ma part qu'il vaut mieux utiliser les objets que les évennements (c'est un avis personnel). Mais si tu es débutant, je te conseille de le faire des deux manières. D'une part pour comparer et de l'autre tu apprendras beaucoup.
N'hésite pas à demander si tu as des problèmes.
Commenter la réponse de soussous78
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 15 févr. 2013 à 20:11
0
Merci
vaut mieux utiliser les objets que les événement


heu c'est un peu la même chose, un événement est généré par un objet, donc utiliser un événement revient à utiliser un objet.

C'est pourquoi je pense qu'à partir du moment ou on dessine un objet pourquoi se faire ch... à le retrouver en fonction des positions de la souris alors qu'il est capable tout seul de dire "coucou" la souris me passe dessus
Whismeril
Commenter la réponse de Whismeril
micbristol 36 Messages postés dimanche 23 décembre 2007Date d'inscription 24 février 2013 Dernière intervention - 24 févr. 2013 à 21:42
0
Merci
Salut,
J'ai un peu avancé dans mon programme, mais je rencontre un autre probleme.
Je gere mes données avec un fichier XML externe, j'arrive a lire, modifier les données etc.. j'enregistre mon xml, et je veux mettre a jour les données afficher, mais les données restes comme elles etaient.
pourtant j'ai pris soins de gerer les controls etc.. en debug mode je vois bien les données changées et sauvegardées mais le display ne suit pas.
Ce dont je ne comprends pas, c'est que si je relance mon prog, il va prendre les nouvelles données comme il aurait du le faire.
J'utilise XmlDocument, mais y a pas de method Close(). Je pensais le fermé et le reouvrir..
Ceci dit, j'ai essayé d'instancier mon xml a chaque fois que je voulais l'utilisé dans mes methodes a la place d'une fois en general, donc a la sortie de la methode, l'instance devrait disparaitre ? donc dans ma prochaine instance elle devrait prendre en compte la mise a jour ?

bref je suis coincé

Le program et un peu long pour le poster ici, je sais pas comment faire, dois-je creer une source a telecharger ? meme s'il n'est pas fini ?

Merci
Commenter la réponse de micbristol
Whismeril 11627 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 25 févr. 2013 à 07:35
0
Merci
Bonjour, non pas de sources.
Tout d'abord il serait judicieux de clore ce poste par "réponse acceptée" et d'en ouvrir un pour ta deuxième question. Poste les bouts de code concernant la lecture du XML et le rafraîchissement des contrôle, ça devrait suffire


Whismeril
Commenter la réponse de Whismeril
mickbristol78 - 25 févr. 2013 à 09:55
0
Merci
Salut,
il me semble avoir deja clicker "reponse acceptée", celle du 13/02.
ok j'ai creé un autre post a l'addresse
Tapez le texte de l'url ici.

merci encore de ton aide

Mick
Commenter la réponse de mickbristol78

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.