none
Garder une couleur à chaque ouverture du programme (vb.net) RRS feed

  • Question

  • Bonjour,

    donc voilà mon problème : j'utilise des boutons pour changer la couleur de mon form, de mon datagrid et des mes labels, donc jusque la ça marche mais ce que je voudrais faire c'est que quand je change de couleur et que je ferme mon programme et que je le reouvre, que la couleur que j'ai choisi avant de fermer mon programme soit remise à la réouverture du programme, en gros que cela fasse une sauvegarde de la couleur choisie.

    Donc voilà un extrait du code d'un des mes boutons pour changer les couleurs :

    Me.backcolor = color.lightGray
    Datagrid.backgroundcolor = color.darkgray
    panel1.backcolor = color.silver
    panel2.backcolor = color.silver
    panel3.backcolor = color.darkgray
    

    Merci d'avance pour vos réponses,

    Cordialement

    Thomas

    vendredi 18 juin 2010 13:55

Réponses

  • "Erogh" a écrit dans le message de groupe de discussion :
    61713213-5c73-47c6-ac7a-993355a5fd57@communitybridge.codeplex.com...
    > Bonjour,
    >
    > donc voilà mon problème : j'utilise des boutons pour changer la
    > couleur de mon form, de mon datagrid et des mes labels, donc jusque la
    > ça marche mais ce que je voudrais faire c'est que quand je change de
    > couleur et que je ferme mon programme et que je le reouvre, que la
    > couleur que j'ai choisi avant de fermer mon programme soit remise à la
    > réouverture du programme, en gros que cela fasse une sauvegarde de la
    > couleur choisie.
    >
    > Donc voilà un extrait du code d'un des mes boutons pour changer les
    > couleurs :
    >
    > Me.backcolor = color.lightGray
    > Datagrid.backgroundcolor = color.darkgray
    > panel1.backcolor = color.silver
    > panel2.backcolor = color.silver
    > panel3.backcolor = color.darkgray
    > Merci d'avance pour vos réponses,
     
    Une autre solution est d'utiliser ce qui existe dans Visual Studio et vb
    .NET.
    En mode Design, dans la fenêtre propriété, il y a une rubrique
    ApplicationSettings.
    Elle propose d'établir des liens entre des propriétés de chaque objet et
    des «Settings».
    Il y a deux types de Settings (Application et Utilisateur).
    Les Settings de type Application seront enregistrés dans le dossier de
    l'application (et donc non modifiables en exécution).
    Les Settings de type Utilisateur sont stockés dans un fichier du profil
    utilisateur et peuvent être modifiés en exécution et automatiquement
    enregistrés à la fermeture du programme.
    Veiller, dans les propriétés du projet, à ce que «Application Framework»
    soit bien coché ainsi que «Enregistrer les paramètres à la sortie»
    (traductions approximatives de ce que me montre ma version en langue
    anglaise).
     
     
    --
    Fred
    foleide@free.fr
     
     
    samedi 19 juin 2010 05:26

Toutes les réponses

  • Bonjour, à la fermeture de la Form tu peux créer un fichier .ini ou .xml dans qui enregistre les préférences, et à l'ouverture de la Form tu utilise un streamreader qui récupère les préférences.

    Exemple :

      Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim sw As StreamWriter
        Dim settings_list As New List(Of String)
        ' tu ajoutes les propriétés que tu veux, par exemple DataGridView1.BackgroundColor=
        settings_list.Add("DataGridView1.BackgroundColor=" & DataGridView1.BackgroundColor.ToKnownColor.ToString)
        'settings_list.Add("
        'settings_list.Add("
        'settings_list.Add("
    
        Dim settings_file As String = Application.StartupPath & "\settings.ini"
    
        'On créé un fichier settings.ini dans le même répertoire que notre programme
        If Not File.Exists(settings_file) Then
          sw = New StreamWriter(settings_file)
          For Each value As String In settings_list
            sw.WriteLine(value & Environment.NewLine)
          Next
          sw.Close()
          sw = Nothing
        Else
          sw = New StreamWriter(settings_file)
          For Each value As String In settings_list
            sw.WriteLine(value & Environment.NewLine)
          Next
          sw.Close()
          sw = Nothing
        End If
      End Sub
    
      Private Sub check_settings()
        Dim settings_file As String = Application.StartupPath & "\settings.ini"
        If File.Exists(settings_file) Then
          'si settings.ini existe on lis les infos
          Dim sr As New StreamReader(settings_file)
          Dim sLine As String = sr.ReadLine()
          While Not sLine Is Nothing
            'lecture ligne par ligne
            'si la ligne contient DataGridView1, on récupère la couleur
            If sLine.Contains("DataGridView1.BackgroundColor=") Then
              Dim color As String() = sLine.Split("=")
              DataGridView1.BackgroundColor = System.Drawing.Color.FromName(color(1))
            End If
          End While
          sr.Close()
        End If
      End Sub
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim settings_thread As Threading.Thread
        settings_thread = New Threading.Thread(AddressOf check_settings) 'check_settings est la fonction exécutée par le thread.
        settings_thread.Start() ' Démarrage du thread.
      End Sub

    • Modifié BreizhNet vendredi 18 juin 2010 18:47 Mise à jour du code
    vendredi 18 juin 2010 16:42
  • Déjà merci de m'avoir répondu, sinon j'ai deux trois questions par rapport à ton code :

    -où est-ce qu'on indique le chemin où on va être créer le fichier "settings.ini"?

    -le "private sub save_settings()" c'est quelque chose que tu as déclaré ou c'est un outil ?

    -et est-ce que tu pourrais mettre des annotations pour expliquer un peu ce que fait le code ? (cette question résume les deux du dessus)

     

    merci d'avance

     

    Cordialement,

    Thomas.

    vendredi 18 juin 2010 17:22
  • J'ai compris pour le "private sub save_settings()" mais sinon il y a quelque chose qui ne va pas, ça crée bien le fichier .ini mais le problème c'est que quand je relance le programme, il se ferme direct sans message d'erreur. Est-ce que vous avez une idée de ce qui se passe ? merci d'avance Cordialement, Thomas
    vendredi 18 juin 2010 18:10
  • J'ai modifié le code en rajoutant un Thread pour éviter que la Form freeze à l'ouverture, et je t'ai rajouté l'event FormClosing qui entraîne l'enregistrement des "settings". J'ai également commenté un peu le code.
    vendredi 18 juin 2010 18:49
  • Tout d'abord merci pour les commentaires mis et sinon voilà le résultat :

    -ça génère bien le settings.ini mais quand je ferme et que je reouvre, il n'y a rien. (enfin c'est comme au début)

    -quand je le ferme pour une deuxième fois, il y a une erreur à la ligne suivant :

    sw = New StreamWriter(settings_file)

     

    ça me marque : Le processus ne peut pas accéder au fichier 'C:\blablabla\blabla\settings.ini', car il est en cours d'utilisation par un autre processus.

     

    voilà les deux erreurs.

     

    Cordialement,

    Thomas.

    vendredi 18 juin 2010 19:43
  • "Erogh" a écrit dans le message de groupe de discussion :
    61713213-5c73-47c6-ac7a-993355a5fd57@communitybridge.codeplex.com...
    > Bonjour,
    >
    > donc voilà mon problème : j'utilise des boutons pour changer la
    > couleur de mon form, de mon datagrid et des mes labels, donc jusque la
    > ça marche mais ce que je voudrais faire c'est que quand je change de
    > couleur et que je ferme mon programme et que je le reouvre, que la
    > couleur que j'ai choisi avant de fermer mon programme soit remise à la
    > réouverture du programme, en gros que cela fasse une sauvegarde de la
    > couleur choisie.
    >
    > Donc voilà un extrait du code d'un des mes boutons pour changer les
    > couleurs :
    >
    > Me.backcolor = color.lightGray
    > Datagrid.backgroundcolor = color.darkgray
    > panel1.backcolor = color.silver
    > panel2.backcolor = color.silver
    > panel3.backcolor = color.darkgray
    > Merci d'avance pour vos réponses,
     
    Une autre solution est d'utiliser ce qui existe dans Visual Studio et vb
    .NET.
    En mode Design, dans la fenêtre propriété, il y a une rubrique
    ApplicationSettings.
    Elle propose d'établir des liens entre des propriétés de chaque objet et
    des «Settings».
    Il y a deux types de Settings (Application et Utilisateur).
    Les Settings de type Application seront enregistrés dans le dossier de
    l'application (et donc non modifiables en exécution).
    Les Settings de type Utilisateur sont stockés dans un fichier du profil
    utilisateur et peuvent être modifiés en exécution et automatiquement
    enregistrés à la fermeture du programme.
    Veiller, dans les propriétés du projet, à ce que «Application Framework»
    soit bien coché ainsi que «Enregistrer les paramètres à la sortie»
    (traductions approximatives de ce que me montre ma version en langue
    anglaise).
     
     
    --
    Fred
    foleide@free.fr
     
     
    samedi 19 juin 2010 05:26
  • Merci pour toutes vos réponses, je vais essayer de faire plusieurs test pour réaliser cette sauvegarde de couleur avec la solution de Foleide même si c'est encore un peu flou dans ma tête. (à moins que quelqu'un me donne un exemple un peu plus détaillé, sinon c'est pas grave).

     

    Cordialement,

    Thomas.

    lundi 21 juin 2010 12:01