begin process at 2012 02 10 08:06:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

simplification de code


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

simplification de code

mercredi 8 juillet 2009 à 14:01:09 | simplification de code

johnnous

bonjour
j'ai 2 routines presque identique seul le (Textbox) ou le (Label)
c'est possible de reunir les 2 dans une même methode


        private string TextBoxToXml(Control c, StreamWriter sw)
        {
            try
            {
                if (c is TextBox)
                {

                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((TextBox)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no textbox";
            }
            catch (Exception e)
            {
                return "TextBoxToXml :error " + e.Message;
            }
///********
        private string LabelToXml(Control c, StreamWriter sw)
        {
            try
            {
                if (c is Label)
                {

                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((Label)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no Label";
            }
            catch (Exception e)
            {
                return "LabelToXml :error " + e.Message;
            }
        }



Merci d'avance
mercredi 8 juillet 2009 à 14:39:28 | Re : simplification de code

Zakki49

Salut,

oui tu peux, puisque tu fais le test si c (ton control) est une textbox, donc tu peux très bien mettre dans ta fonction la partie testant si c'est un label.
mercredi 8 juillet 2009 à 14:41:56 | Re : simplification de code

krimog

Administrateur CodeS-SourceS
Réponse acceptée !
Je ne vois pas vraiment où est le problème :

        private string ControlToXml(Control c, StreamWriter sw)
        {
            try
            {
                if (c is TextBox)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((TextBox)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else if (c is Label)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((Label)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no textbox nor label";
            }
            catch (Exception e)
            {
                return "ControlToXml :error " + e.Message;
            }
        }

Etant donné que toutes les propriétés que tu utilises sont dans Control, tu peux même faire ça :
        private string ControlToXml(Control c, StreamWriter sw)
        {
            try
            {
                if (c is TextBox || c is Label)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((TextBox)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no textbox nor label";
            }
            catch (Exception e)
            {
                return "ControlToXml :error " + e.Message;
            }
        }

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
mercredi 8 juillet 2009 à 14:45:29 | Re : simplification de code

Zakki49

non pas possible de faire ça :

if (c is TextBox || c is Label)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((TextBox)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no textbox nor label";
            }

puisqu'il n'ecrit pas tout à fait la même chose
mercredi 8 juillet 2009 à 15:03:18 | Re : simplification de code

johnnous

en effet mon probleme est sur
((TextBox)c).Location.X
ou
((Label)c).Location.X

je veux lister tous mes controls et en suite
les serialiser ou les deserialiser
mercredi 8 juillet 2009 à 15:05:06 | Re : simplification de code

Zakki49

ce que t'as mis krimog en premier est très bien :

private string ControlToXml(Control c, StreamWriter sw)
        {
            try
            {
                if (c is TextBox)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((TextBox)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else if (c is Label)
                {
                    sw.WriteLine("<" + c.GetType() + "." + c.Name + ">");
                    sw.WriteLine("  <Text>" + c.Text + "</Text>");
                    sw.WriteLine("  <LocationX>" + ((Label)c).Location.X + "</LocationX>");
                    sw.WriteLine("</" + c.GetType() + "." + c.Name + ">");
                    return "";
                }
                else return "no textbox nor label";
            }
            catch (Exception e)
            {
                return "ControlToXml :error " + e.Message;
            }
        }


tu validera la reponse de krimog
mercredi 8 juillet 2009 à 15:14:08 | Re : simplification de code

johnnous

non ce n'est pas ce que je recherche dans la solution qui marche j'ecrit 2 fois les même code textbox label pret
dans mon projet gloabal j'ai beaucoup plus de sw.writeln et j'ai des picturebox et des button dans je vais un copier coller puis je change textbox par button par exemple
mais j'aimerais savoir s'il n'existe pas mieux en passant en paramètre le textbox ou button
merci
mercredi 8 juillet 2009 à 15:21:47 | Re : simplification de code

krimog

Administrateur CodeS-SourceS
J'ai juste oublié un tout petit détail dans ma 2ème version : il ne faut pas mettre "((Textbox)c).Location" mais juste c.Location, au temps pour moi.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
mercredi 8 juillet 2009 à 15:49:39 | Re : simplification de code

johnnous

ok ça l'air de marche mais je ne comprend j'avais essayer faire un c. (Ctrl+j) et je ne voyais pas les methodes

merci super



Cette discussion est classée dans : textbox, label, return, writeline, simplification


Répondre à ce message

Sujets en rapport avec ce message

label - textbox et edition du contenu helllppp [ par luccs ] voila en fait je me lance dans une petite calcu en c# et j ais preferer le label pour afficher l operation entrer a la texte box (histoire de controle C# TreeView - ComboBox, TextBox, ou UserControl dans les noeuds [ par smashingraph ] Bonjour, J'ai un petit souci avec mon treeView. J'aimerais pouvoir enrichir les noeuds du treeView en mettant par exemple une ComboBox, une TextBox, Crystal Report ..Inserer textbox, label, etc [ par kme ] Après avoir effectué des modifications de ma base dans mon formulaire, je veux les imprimer.Pour cela, j'ai crée un crystal report et j'ai inserer que Label ou textbox qui s'agarndit automatiquement en cas de long texte [ par pierru ] Tout est dans le sujet je crois.Je crée dynamiquement un label, ensuite je rentre du texte dedans qui peut etre long, et s'il est trop long on ne le v Format d'un textBox ou Label [ par hred1 ] Bonjour, je souhaite afficher une valeur dans un text ou dans un label, sauf que ma valeur est décimale avec beaucoup de chiffres après la vérgule.Com Accès a la propriété Text d'une TextBox dynamique [ par bgcode ] private void button2_Click(object sender, EventArgs e)         {             nb=nb_champs.Text; Menu Toolstrip [ par jergelcol ] Bonjour à tous,Je suis en train de construire une barre d'outils/menu de type ToolStrip.Je voudrais à un moment créer un menu (ToolStripMenuItem) qui [c#] Rotation label ou textBox [ par seb3034 ] Bonjours, je recherche un moyen d'incliner un label ou un textBox . D'après tout se que j'ai testé sur le web aucun n'a fonctionné en C#. Je me penc creation automatique de textbox [ par skobido11 ] bsrpouvez vous m'aider à améliorer mon code .à chaque clik sur le bouton un nouveau textbox sera crée automatiquement devant lui un label dans laquel ajout de label, textbox sur clic de bouton [ par sexbombrock ] Bonjour je voulais savoir si il était possible d ajouter des objects sur simple clic de bouton. je voudrais obtenir une liste de label avec dans chaqu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,619 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales