Properties.Settings.Default

Signaler
Messages postés
13
Date d'inscription
mardi 30 septembre 2003
Statut
Membre
Dernière intervention
22 février 2012
-
Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012
-
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

Messages postés
285
Date d'inscription
dimanche 14 décembre 2003
Statut
Membre
Dernière intervention
13 mars 2012

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