Vous pouvez-maider?

cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 - 15 sept. 2007 à 09:34
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 - 23 sept. 2007 à 15:07
Salut à tous, voila, je développe un Projet en VB.Net, et j'utilise une dll qui permet de base d'enregistrer tous les contrôle d'une form dans un xml. OK, elle fonctionne très bien, le problême est qu'elle ne gère que les propriétés Text, Top, Left, Size et quelque autre, alors, j'aimerais que ça soit plus complexe en y rajoutant Backcolor, Name... ect, de façon à ce qu'il y ai toute les proriétés quoi. Et le truc, est que je ne sais pas faire de C#.net, j'ai essayé de rajouter une propriété en copiant un bout de code et en le modifiant un n'importe comment, aucun succet (fallait ci attendre).
Alors, pouvez-vous m'aidez pour me donné un petit tuyau ou le faire à ma place si c'est beaucoup plus compliqué que je ne le pense?
Big merci pour vos aide.

ps: vous allez surment me dire d'apprendre le C#, je compte bien le faire, mais plus tard car là, je suis un peut pressé avec mon projet...

Voilà le projet de la dll:
dossier/DesignModeDialog.rar http://www.velesoftware.2007.fr/Nouveau dossier/DesignModeDialog.rar

encore merci

a+

ebaudoux@club.fr
dossier/DesignModeDialog.rar http://www.velesoftware.2007.fr
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html

15 réponses

cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
15 sept. 2007 à 09:36
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
15 sept. 2007 à 10:34
"ou le faire à ma place" -> je t'invite à lire le règlement...

Je suis allé faire un tour sur ton site web et je t'invite fortement a corriger toutes les fautes de français, parce qu'il y en a jusque dans les noms des menus... pas très sérieux.

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
15 sept. 2007 à 11:25
Oui, je suis au courant, et désolé pour

"ou le faire à ma place", je me suis rendu contre après que j'était un peut gonflé de dire ça. Pour mon site, bah, mon plus gros problême en informatique (et en français), c'est l'orthographe, ba de blême, je ne compte pas sortir un truc important sans corriger tous ça, je compte refaire mon à 0 dans quelque temp

Euh, sinon, une solution pour m'aider?

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
15 sept. 2007 à 13:34
Salut, on veut bien t'aider sur un problème précis, ou sur un bout de code mais je pense que les gens qui passent sur CS n'ont pas vraiment envie de télécharger un projet entier et se plonger dedans.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
15 sept. 2007 à 13:42
Ouai, tu as surment raison, mais comme je ne sais pas faire de C, je ne sais pas vraiment quel code donner.
Bon, écoutez, j'ai essayé différent truc avec ce code, il n'y a pas de bugs, mais, disont qu'il y a quand même des erreus. Voila donc le boute de code que j'ai modifié:

public class FormSerializer
    {
        private static void SerializeControls(XmlDocument doc, XmlNode parentNode, Control.ControlCollection controls)
        {
            foreach (Control control in controls)
            {
                XmlElement newElement = doc.CreateElement("Control");

                XmlAttribute attribute = doc.CreateAttribute("ControlType");
                attribute.Value = control.GetType().ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Name");
                attribute.Value = control.Name;
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Text");
                attribute.Value = control.Text;
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Top");
                attribute.Value = control.Top.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Left");
                attribute.Value = control.Left.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Width");
                attribute.Value = control.Width.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Height");
                attribute.Value = control.Height.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("OnClick");
                attribute.Value = "";
                newElement.Attributes.Append(attribute);
               
                parentNode.AppendChild(newElement);

                if (control.HasChildren)
                    SerializeControls(doc, newElement, control.Controls);
            }
        }

        public static XmlDocument Serialize(Form form)
        {
            XmlDocument doc = new XmlDocument();

            XmlElement element = doc.CreateElement("root");

            SerializeControls(doc, element, form.Controls);

            doc.AppendChild(element);

            return doc;
        }
       
        public static void Serialize(Form form, string fileName)
        {
            Serialize(form).Save(fileName);
        }

        public static void Deserialize(Form form, string fileName)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(fileName);

            Deserialize(form, doc);
        }

        public static void Deserialize(Form form, XmlDocument doc)
        {
            if (!doc.HasChildNodes) return;
           
            XmlNode root = doc.ChildNodes[0];
            DeserializeControls(doc, root, form);
        }

        private static void DeserializeControls(XmlDocument doc, XmlNode parentNode, Control parentControl)
        {
            foreach (XmlNode node in parentNode.ChildNodes)
            {
                string typeName = node.Attributes["ControlType"].Value;
                Assembly a = Assembly.GetAssembly(typeof(Form));
                Type t = a.GetType(typeName);

                Control c = (Control) Activator.CreateInstance(t);

                c.Name = node.Attributes["Name"].Value;
                c.Text = node.Attributes["Text"].Value;
                c.Top = Convert.ToInt32(node.Attributes["Top"].Value);
                c.Left = Convert.ToInt32(node.Attributes["Left"].Value);
                c.Width = Convert.ToInt32(node.Attributes["Width"].Value);
                c.Height = Convert.ToInt32(node.Attributes["Height"].Value);

                c.Parent = parentControl;

                string clickMethod = node.Attributes["OnClick"].Value;
                if (clickMethod != "")
                {
                    Form f = parentControl.FindForm();
                    Type formType = f.GetType();
                    MethodInfo mi = formType.GetMethod(clickMethod);
                    if (mi != null)
                        c.Click += (EventHandler) Delegate.CreateDelegate(typeof(EventHandler), f, mi);
                }

                if (node.HasChildNodes)
                    DeserializeControls(doc, node, c);
            }
        }

et voici l'originale:

public class FormSerializer
    {
        private static void SerializeControls(XmlDocument doc, XmlNode parentNode, Control.ControlCollection controls)
        {
            foreach (Control control in controls)
            {
                XmlElement newElement = doc.CreateElement("Control");

                XmlAttribute attribute = doc.CreateAttribute("ControlType");
                attribute.Value = control.GetType().ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Text");
                attribute.Value = control.Text;
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Top");
                attribute.Value = control.Top.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Left");
                attribute.Value = control.Left.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Width");
                attribute.Value = control.Width.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("Height");
                attribute.Value = control.Height.ToString();
                newElement.Attributes.Append(attribute);

                attribute = doc.CreateAttribute("OnClick");
                attribute.Value = "";
                newElement.Attributes.Append(attribute);
               
                parentNode.AppendChild(newElement);

                if (control.HasChildren)
                    SerializeControls(doc, newElement, control.Controls);
            }
        }

        public static XmlDocument Serialize(Form form)
        {
            XmlDocument doc = new XmlDocument();

            XmlElement element = doc.CreateElement("root");

            SerializeControls(doc, element, form.Controls);

            doc.AppendChild(element);

            return doc;
        }
       
        public static void Serialize(Form form, string fileName)
        {
            Serialize(form).Save(fileName);
        }

        public static void Deserialize(Form form, string fileName)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(fileName);

            Deserialize(form, doc);
        }

        public static void Deserialize(Form form, XmlDocument doc)
        {
            if (!doc.HasChildNodes) return;
           
            XmlNode root = doc.ChildNodes[0];
            DeserializeControls(doc, root, form);
        }

        private static void DeserializeControls(XmlDocument doc, XmlNode parentNode, Control parentControl)
        {
            foreach (XmlNode node in parentNode.ChildNodes)
            {
                string typeName = node.Attributes["ControlType"].Value;
                Assembly a = Assembly.GetAssembly(typeof(Form));
                Type t = a.GetType(typeName);

                Control c = (Control) Activator.CreateInstance(t);

                c.Text = node.Attributes["Text"].Value;
                c.Top = Convert.ToInt32(node.Attributes["Top"].Value);
                c.Left = Convert.ToInt32(node.Attributes["Left"].Value);
                c.Width = Convert.ToInt32(node.Attributes["Width"].Value);
                c.Height = Convert.ToInt32(node.Attributes["Height"].Value);

                c.Parent = parentControl;

                string clickMethod = node.Attributes["OnClick"].Value;
                if (clickMethod != "")
                {
                    Form f = parentControl.FindForm();
                    Type formType = f.GetType();
                    MethodInfo mi = formType.GetMethod(clickMethod);
                    if (mi != null)
                        c.Click += (EventHandler) Delegate.CreateDelegate(typeof(EventHandler), f, mi);
                }

                if (node.HasChildNodes)
                    DeserializeControls(doc, node, c);
            }
        }

La seul différence est que j'ai essayé de rajouter la propriété Name, mais voila, le problême, ce texte suivant est ce qui s'inscrivait dans le fichier avant que je ne modifie le code:

<root>
  <Control ControlType="System.Windows.Forms.Button" Text="button3" Top="12" Left="12" Width="75" Height="23" OnClick="" />
  <Control ControlType="System.Windows.Forms.Button" Text="Click to go to design mode" Top="59" Left="12" Width="160" Height="23" OnClick="" />
  <Control ControlType="System.Windows.Forms.ComboBox" Text="" Top="70" Left="270" Width="129" Height="21" OnClick="" />
  <Control ControlType="System.Windows.Forms.TabControl" Text="" Top="88" Left="87" Width="403" Height="260" OnClick="">
    <Control ControlType="System.Windows.Forms.TabPage" Text="tabPage1" Top="22" Left="4" Width="395" Height="234" OnClick="">
      <Control ControlType="System.Windows.Forms.Button" Text="button2" Top="178" Left="37" Width="75" Height="23" OnClick="" />
      <Control ControlType="System.Windows.Forms.GroupBox" Text="groupBox1" Top="62" Left="71" Width="200" Height="100" OnClick="">
        <Control ControlType="System.Windows.Forms.Button" Text="button4" Top="20" Left="53" Width="75" Height="23" OnClick="" />
      </Control>
    </Control>
    <Control ControlType="System.Windows.Forms.TabPage" Text="tabPage2" Top="22" Left="4" Width="395" Height="234" OnClick="" />
  </Control>
</root>

Le problême est que quand j'utilise donc le code pour enregistrer, il n'y a aparament pas de bugs mais ce qui est dans le fichier est exactement la même chose, comme si le programme avait sauté la propriété Name

voila
a+

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
16 sept. 2007 à 11:26
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
17 sept. 2007 à 20:17
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
19 sept. 2007 à 20:41
Pfff, je ne m'en sort pas, j'ai vraiment besoin d'aide, vous pouvez m'aidez svp?

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 sept. 2007 à 18:12
Si tu lances la sérialisation en debug pas à pas, aucune exception n'est levée ? le XmlDocument que tu construit contient il le nouvel élément "Name" en mémoire avant d'être sauvegardé sur disque ?

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
20 sept. 2007 à 18:15
Salut, auccune exeption n'est levée, et l'élément Name est bien en mémoire avant d'être enregistrer.

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 sept. 2007 à 18:22
Dans ce cas c'est qu'il doit y avoir un problème lors de l'enregistrement... tu as testé en enregistrant ton XmlDocument dans un fichier qui "n'existe pas encore" ? (et tu n'a pas d'exception non plus lors de l'enregistrement ?)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
20 sept. 2007 à 18:25
Oui, j'ai testé enregistrant dans un XmlDocument qui n'existe toujours pas, et je n'ai pas de bugs.

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
20 sept. 2007 à 19:24
Alors là je ne comprend pas... si le XmlDocument contient l'élément, que le Save passe sans erreur et que le fichier résultant ne contienne pas l'élément...

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
20 sept. 2007 à 19:32
Effectivement, c'est bizarre, de plus, pour certaine propriété autre que Name et celle qui sont déja dans le script que je vous ais donné, il y a des bugs lors de l'enregistrement, m'enfin je m'en doutait un peu vue que je ne sais pas faire de C#.

ebaudoux@club.fr
http://velerweb-2.fr.nf
http://velerweb-2.fr.nfhttp://tempuri.org/tempuri.html
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
23 sept. 2007 à 15:07
0
Rejoignez-nous