Properties.Settings.Default

cs_developper_man Messages postés 13 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 22 février 2012 - 22 févr. 2012 à 17:07
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012 - 4 mars 2012 à 00:41
bonjour tout le monde
voila, j'aimerai réaliser une petite fenetre "parametres" qui me permettra de lister tout les parametres de l'application et de les modifier.
ce bout de code fait trés bien le travail, mais au relancement de l'application on dirai que le fihier config modifié "user.config" qui existe dans "application data" ne se charge pas.

quelqu'un à une idée???
merci

  public partial class parametres : Form
    {

        private System.Windows.Forms.Label[] lblSettings;
        private System.Windows.Forms.TextBox[] txtSettings;


        public parametres()
        {
            InitializeComponent();
        }

        private void parametres_Load(object sender, EventArgs e)
        {
            initialiser();
        }

        void initialiser()
        {

            int i = 0;
            lblSettings = new Label[Properties.Settings.Default.Properties.Count];
            txtSettings = new TextBox[Properties.Settings.Default.Properties.Count];

            foreach (System.Configuration.SettingsProperty item in Properties.Settings.Default.Properties)
            {
                // 
                // label1
                // 
                this.lblSettings[i] = new Label();
                this.lblSettings[i].AutoSize = true;
                this.lblSettings[i].Location = new System.Drawing.Point(25, 56 + i * 40);
                this.lblSettings[i].Name = "lbl" + item.Name;
                this.lblSettings[i].Size = new System.Drawing.Size(35, 13);
                this.lblSettings[i].TabIndex = 0;
                this.lblSettings[i].Text = item.Name;
                // 
                // textBox1
                // 
                this.txtSettings[i] = new TextBox();
                this.txtSettings[i].Location = new System.Drawing.Point(135, 52 + i * 40);
                this.txtSettings[i].Name = "txt" + item.Name;
                this.txtSettings[i].Size = new System.Drawing.Size(314, 20);
                this.txtSettings[i].TabIndex = 1;
                this.txtSettings[i].Text = item.DefaultValue.ToString();


                this.Controls.Add(this.txtSettings[i]);
                this.Controls.Add(this.lblSettings[i]);
                i = i + 1;
            }   
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            foreach (System.Configuration.SettingsProperty item in Properties.Settings.Default.Properties)
            {
                item.DefaultValue = ((TextBox)this.Controls["txt" + item.Name]).Text;

            }
            Properties.Settings.Default.Save();
        }

        private void btnVider_Click(object sender, EventArgs e)
        {
            foreach (System.Configuration.SettingsProperty item in Properties.Settings.Default.Properties)
            {
                ((TextBox)this.Controls["txt" + item.Name]).Text = ""; 
            }
        }

        private void btnRecharger_Click(object sender, EventArgs e)
        {
            foreach (System.Configuration.SettingsProperty item in Properties.Settings.Default.Properties)
            {
                ((TextBox)this.Controls["txt" + item.Name]).Text = item.DefaultValue.ToString();
            }
        }


    }

1 réponse

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
4 mars 2012 à 00:41
madbob
Salut c'est une bonne idée ton code et tu as fait le plus gros du boulot...Même si on est nombreux à l'avoir fait

Tu as presque la solution. C'est juste qu'il y a une petite aastuce windows merci Microsoft on t'aime aussi pour ça?!?

Bref, tu travailles sur le chargement à partir des valeurs par défaut (le nom de la propriété que tu utilises est pourtant assez explicite "defaultvalue"...Pas terrible) Il faut que tu revois la valorisation et le chargement en utilisant le "item.name" comme indexeur de Setting.Default{item.Name]

pour le chargement : this.txtSettings[i].Text = Settings.Default[item.Name].ToString();

Bon je pense que tu vas t'en sortir
Bon Code
Rejoignez-nous