2010-05-16 6 views
2

Je travaille sur un programme pour automatiser mes contrôles de sauvegarde avec la sauvegarde LogMeIn (un programme de formulaires basés sur Windows). J'ai maintenant besoin d'un moyen de stocker les paramètres de l'utilisateur, pour enregistrer des informations facilement. Je n'ai jamais travaillé avec les paramètres d'application/utilisateur qui sont quelque peu "intégrés" - et j'ai décidé de l'essayer, mais j'ai rencontré des problèmes.C# Properties.Settings.Default ne fonctionne pas comme prévu

j'ajouté quatre paramètres pour l'instant: IncludeCriteria (Specialized.StringCollection) ExcludeCriteria (Specialized.StringCollection) ReportPath (string) ReportType (int)

Mais le comportement ne fonctionne pas comme prévu (aller figure). Après avoir sauvegardé certaines valeurs dans mon programme, je reviens à éditer/voir mes valeurs de paramètres en utilisant l'éditeur de paramètres VS 2008. Aucune de mes valeurs n'est stockée. Bien que je pense que cela puisse être parce que ces valeurs ne sont que des valeurs par défaut, ne serait-ce pas là où elles peuvent être stockées/lues/changées?

Voici mon code sous forme de charge (encore très grossier):

private void setupForm() 
    { 
     txtPath.Text = BackupReport.Properties.Settings.Default.ReportPath == null ? "" : BackupReport.Properties.Settings.Default.ReportPath; 

     if (BackupReport.Properties.Settings.Default.ReportType == 0) 
     { 
      radioHTML.Checked = true; 
     } 
     else 
      radioExcel.Checked = true; 

     if (BackupReport.Properties.Settings.Default.IncludeCriteria.Count > 0) 
     { 
      listIncludeCriteria.DataSource = Properties.Settings.Default.IncludeCriteria; 


      //foreach (string s in Properties.Settings.Default.IncludeCriteria) 
      // listIncludeCriteria.Items.Add(s); 
     } 

     if (BackupReport.Properties.Settings.Default.ExcludeCriteria.Count > 0) 
     { 
      listExcludeCriteria.DataSource = BackupReport.Properties.Settings.Default.ExcludeCriteria; 

      //foreach (string s in Properties.Settings.Default.ExcludeCriteria) 
      // listExcludeCriteria.Items.Add(s); 
     } 





    } 

listIncludeCriteria est juste une zone de liste. Lorsque l'utilisateur je sauve appeler cette méthode:

private void saveSettings() 
    { 
     //var settings = BackupReport.Properties.Settings; 
     if (txtPath.Text != "") 
     { 
      BackupReport.Properties.Settings.Default.ReportPath = txtPath.Text; 

     } 

     if (listIncludeCriteria.Items.Count > 0) 
     { 
      //BackupReport.Properties.Settings.Default.IncludeCriteria = (StringCollection)listIncludeCriteria.Items.AsQueryable(); 


      foreach (var i in listIncludeCriteria.Items) 
      { 
       if (!isIncludeDuplicate(i.ToString())) 
        BackupReport.Properties.Settings.Default.IncludeCriteria.Add(i.ToString()); 
      } 

     } 

     if (listExcludeCriteria.Items.Count > 0) 
     { 

      //BackupReport.Properties.Settings.Default.ExcludeCriteria = (StringCollection)listExcludeCriteria.Items.AsQueryable(); 

      foreach (var i in listExcludeCriteria.Items) 
      { 
       if (!isExcludeDuplicate(i.ToString())) 
        Properties.Settings.Default.ExcludeCriteria.Add(i.ToString()); 
      } 

     } 

     if (radioExcel.Checked == true) 
      BackupReport.Properties.Settings.Default.ReportType = 1; 
     else 
      BackupReport.Properties.Settings.Default.ReportType = 0; 


     BackupReport.Properties.Settings.Default.Save(); 
     //Properties.Settings.Default.Save(); 
     this.DialogResult = DialogResult.OK; 
     this.Close(); 



    } 

La chose étrange est quand les charges de forme, le chemin que je mets la première fois semble venir (ReportPath) - même les listes déroulantes sont peuplées avec un groupe de merde je mets - pourtant je ne peux pas trouver ces valeurs partout.

Toute aide serait appréciée!

Josh

+0

Cette réponse dit tout http://stackoverflow.com/ des questions/1804302/où est-la-données pour-propriétés-settings-default- –

Répondre

4

Vous devez enregistrer après l'édition/ajout de

Settings.Default.Save(); 

Un exemple simple j'utilise beaucoup

private void Main_Load(object sender, EventArgs e) 
{ 
    this.Location = Settings.Default.WindowLocation; 
} 

private void Main_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    Settings.Default.WindowLocation = this.Location; 
    Settings.Default.Save(); 
} 
+0

sauvé Eh bien, j'ai eu la méthode .Save() dans mon SaveForm() (BackupReport.Properties.Settings.Default.Save() ;) - mais j'ai compris ce que je suis Sue était. J'ai fini par utiliser une BindingSource, liant ma listbox à ma liste de propriétés, et je l'ai sauvegardée correctement. Merci! – Jack

+1

@BrunoLM ce n'est pas la réponse. –

+0

@Jack Pourriez-vous expliquer comment exactement vous avez résolu le problème? Merci –

Questions connexes