Inscription dans le registre Windows

Résolu/Fermé
ForEverProgrammation Messages postés 8 Date d'inscription mardi 3 août 2021 Statut Membre Dernière intervention 11 décembre 2021 - Modifié le 3 août 2021 à 15:16
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 5 août 2021 à 07:31
Bonjour,
je suis nouveau dans les forums et j'ai besoin d'aide pour faire une inscription dans le registre. L'inscription fonctionne. Mon but est de faire un thème sombre et clair pour mon application. Quand la valeur est 1 dans le registre, c'est le thème clair. Quand la valeur est 2 dans le registre, c'est le thème sombre. Le thème par défaut est clair. Quand je fais le débogage, il commence par le thème sombre. Je regarde dans le registre et je vais voir la clé dans le registre Windows et je vais sur la clé, je vois pourtant la valeur 1. Comme je l'ai dit plus haut, c'est le thème clair. Je vous montre mon code:
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Win32;

namespace Example
{
    public partial class applicationForm : Form
    {
        public applicationForm()
        {
            InitializeComponent();
            // Le nom de la clé doit inclure une racine valide.
            const string userRoot = "HKEY_CURRENT_USER";
            const string subkey = "NomDeLaCle";
            const string keyName = userRoot + "\\" + subkey;
            // Lit la clé et applique le thème clair si la valeur est 1.
            Registry.GetValue(keyName, "PrefTheme", 1);
            // Applique le thème Clair
            BackColor = SystemColors.Control;
            mainTextBox.BackColor = Color.White;
            mainTextBox.ForeColor = SystemColors.ControlText;
            // Lit la clé et applique le thème sombre si la valeur est 2.
            Registry.GetValue(keyName, "PrefTheme", 2);
            BackColor = Color.Black;
            mainTextBox.BackColor = Color.Black;
            mainTextBox.ForeColor = Color.White;
        }
     // Plus bas:
    private void whiteThemeRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            if(whiteThemeRadioButton.Checked == true)
            {
                // Change le thème de l'application
                BackColor = SystemColors.Control;
                mainTextBox.BackColor = Color.White;
                mainTextBox.ForeColor = SystemColors.ControlText;
                blackThemeRadioButton.Checked = false;
                // Le nom de la clé doit inclure une racine valide.
                const string userRoot = "HKEY_CURRENT_USER";
                const string subkey = "TLFDADIDW";
                const string keyName = userRoot + "\\" + subkey;
                // Enregistre la clé
                Registry.SetValue(keyName, "PrefTheme", 1);
            }
        }

        private void blackThemeRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            if(blackThemeRadioButton.Checked == true)
            {
                // Change le thème de l'application
                BackColor = Color.Black;
                mainTextBox.BackColor = Color.Black;
                mainTextBox.ForeColor = Color.White;
                whiteThemeRadioButton.Checked = false;
                // Le nom de la clé doit inclure une racine valide.
                const string userRoot = "HKEY_CURRENT_USER";
                const string subkey = "TLFDADIDW";
                const string keyName = userRoot + "\\" + subkey;
                // Enregistre la clé / Change la clé
                Registry.SetValue(keyName, "PrefTheme", 2);
            }
        }
    }

Pouvez-vous me dir ce qu'il ne fonctionne pas bien dans mon code s'il vous plait (je n'ai pas beaucoup fait d'inscription dans le registre)
A voir également:

3 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
3 août 2021 à 17:13
Bonjour

Enlève le code qui crée le thème dans le constructeur.

Fusionne le changement de thème dans une seule méthode de checkbiox avec un if et un else parce que si un est coché l’autre est forcément décoché donc la.méthode sera appelée quoiqu’il arrive et tu n’en aurais qu’une à corriger au besoin

Dans l’événement Load de ton formulaire va lire la valeur du registre et coche le radio bouton qui va bien
0
ForEverProgrammation Messages postés 8 Date d'inscription mardi 3 août 2021 Statut Membre Dernière intervention 11 décembre 2021
4 août 2021 à 23:15
Merci pour ton aide. Ca fonctionne. Jen tiendrai compte pour après!
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
5 août 2021 à 07:31
De rien.

Pense à marquer le sujet résolu
0