none
Fonctionnement des settings RRS feed

  • Question

  • Bonjour
    Dans mon application, j'ai de nombreuses variables qui sont initialisées par des paramètres que j'ai créés via l'interface Paramètres de l'onglet des propriétés de "monAppli". Donc, je les déclare ainsi
    Private m_TypeOperations As String '= My.Settings.Operation
      'La liste des tables 2, 3, 5 
    Private m_TablesRetenues As New List(Of Integer) '= SplitStrToList(My.Settings.Tables)
      'Défilement des questions manuel ou automatique
    Private m_Manuel As Boolean ' = My.Se etc...
    
    Puis dans l'évèment load, je fais :
    Private Sub Frm_main_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        My.Settings.Reload()
        MiseAJourParametres()
    

    Puis :

    Private Sub MiseAJourParametres()
        'type de tables
        If My.Settings.Operation = TypeOperation.Multiplications.ToString Then
          RdBtnMult.Checked = True
        Else
          RdBtnAdd.Checked = True
        End If
        m_TypeOperations = My.Settings.Operation
    
        'liste des tables
        If SplitStrToList(My.Settings.Tables).Count > 0 Then
          Me.Text = My.Settings.Tables
          m_TablesRetenues = SplitStrToList(My.Settings.Tables)
          For Each Elt As Integer In m_TablesRetenues
            For Each chkbx As CheckBox In PanelChkBx.Controls
              If TrimTout(chkbx.Text) = Elt.ToString Then
                chkbx.CheckState = CheckState.Checked
                Exit For
              Else
                chkbx.CheckState = CheckState.Unchecked
              End If
            Next
          Next
    
        Else
          Me.Text = "Choisis les tables que tu souhaites travailler."
        End If
    
        'Manuel ou auto
        If My.Settings.Manuel = True Then
          BtnQuestionSuivante.Visible = True
          CheckBoxManuel.Checked = True
        Else
          BtnQuestionSuivante.Visible = False
          CheckBoxManuel.Checked = False
        End If
    
    'etc...
    

    La question que je me pose : N'est-ce pas redondant de reloader les settings puis mettre à jour les paramètres à l'aide du sub MiseAJourParametres ?

    A priori, il semblerait que non vu que si je ne fais pas les deux, les controles ne gardent pas les réglages malgré :

    Private Sub Frm_reglages_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        My.Settings.Save()
      End Sub
    
    Autrement dit, est-ce que faire ceci suffit :
    Private Sub RdBtnAdd_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles RdBtnAdd.CheckedChanged
        'Type de tables
        If RdBtnAdd.Checked = True Then
          My.Settings.Operation = TypeOperation.Additions.ToString
          CheckBoxX10.Text = "6 + 70"
          CheckBoxX100.Text = "60 + 70"
        Else
          My.Settings.Operation = TypeOperation.Multiplications.ToString
          CheckBoxX10.Text = "6 x 70"
          CheckBoxX100.Text = "60 x 70"
        End If
        m_TypeOperations = My.Settings.Operation
      End Sub
    
    o faut-il qu'à chaque fois que l'évènement du control est déclenché je fasse :
    My.Settings.Save()
    

    Peut-être qu'avoir un vue de l'interface aidera à comprendre ma question : http://www.scalpa.info/images/logiciels/mestables.png

    Merci

    pascal


    http://www.scalpa.info
    mercredi 1 décembre 2010 08:01

Réponses

  • Bonjour,

    Donc cela veut dire que la modification des paramètres n'est prise en compte qu'à la fermeture et non pas au moment de l'affectation de la variable :
    Par défaut, oui.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse scalpa dimanche 5 décembre 2010 15:14
    dimanche 5 décembre 2010 10:08
    Modérateur

Toutes les réponses

  • > Bonjour
     
    Bonjour,
     
    > Dans mon application, j'ai de nombreuses variables qui sont initialisées
    > par des paramètres que j'ai créés via l'interface Paramètres de l'onglet
    > des propriétés de "monAppli".
     
    Je ne suis pas rentré dans le détail de ton code, mais veux simplement
    t'indiquer la possibilité de lier les propriétés de contrôles
    directement aux paramètres.
     
    Fenêtre propriétés du contrôle -> Application Settings
     
    Peut-être cela peut-il te simplifier la tâche pour la plupart des besoins.
     --
    Fred
    foleide@free.fr
     
    mercredi 1 décembre 2010 09:41
  • Merci, mais il me semble que seuls les booleans y figurent.


    http://www.scalpa.info
    mercredi 1 décembre 2010 11:03
  • Personne pour éclairer ma lanterne ?

    merci

    pascal

     


    http://www.scalpa.info
    samedi 4 décembre 2010 11:44
  • Bonjour, sans vouloir polluer le forum, je reformule ma question sans le code d'exemple...

    Pour modifier la valeur d'un setting à partir d'une action sur un control, suffit-il de donner à cette valeur son nouveau contenu?

    Au démarrage de l'application j'ai :

    My.Settings.Operation = TypeOperation.Multiplications.ToString 
    
    Puis en cliquant sur un checkbox je déclenche :
    My.Settings.Operation = TypeOperation.Additions.ToString 
    

    Est-ce pris en compte aussitôt par My.Settings ou faut-il faire My.Settings.Save() ?

    merci


    http://www.scalpa.info
    samedi 4 décembre 2010 11:49
  • Bonjour,

    Dans Visual Basic, les paramètres sont par défaut enregistré automatiquement à la fermeture de l'application.

    Vous pouvez changer ce comportement par défaut, dans les propriétés de votre projet, onglet "Application" et décochez la case : "Enregistrer My.Settings" lors de l'arrêt.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    samedi 4 décembre 2010 19:29
    Modérateur
  • Bonjour

    Donc cela veut dire que la modification des paramètres n'est prise en compte qu'à la fermeture et non pas au moment de l'affectation de la variable :

    My.Settings.Operation = TypeOperation.Additions.ToString
    

    Merci de votre patience.

    pascal


    http://www.scalpa.info
    dimanche 5 décembre 2010 09:36
  • Bonjour,

    Donc cela veut dire que la modification des paramètres n'est prise en compte qu'à la fermeture et non pas au moment de l'affectation de la variable :
    Par défaut, oui.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse scalpa dimanche 5 décembre 2010 15:14
    dimanche 5 décembre 2010 10:08
    Modérateur