Sauvegardé une checkbox

Messages postés
51
Date d'inscription
mardi 8 mars 2011
Dernière intervention
25 septembre 2018
- - Dernière réponse : Whismeril
Messages postés
12373
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
- 23 mai 2018 à 06:59
Bonjour,
J'aimerais sauvegarder l'état Checked ou non d'une chekbox, pour que quand l'utilisateur re ouvre le logiciel il a toujours la chekbox checker ou non. J'ai donc essayer avec un parametre de "My.Settings.Checked" mais cela ne marche pas et me met comme erreur ( System.InvalidCastException : 'La conversion de la chaîne "" en type 'Boolean' n'est pas valide.' ) Donc je pense pas que cela dois ce faire ainsi.

Qui serais comment m'aider ?

Merci
Afficher la suite 

Votre réponse

1 réponse

Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Il faut bien définir le type du paramètre de configuration sur Boolean.
Whismeril
Messages postés
12373
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
-
Merci de faire un effort avec la coloration syntaxique => force la couleur basic, voir ici
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Je n'ai pas le temps de tester ce matin, est ce que ce code fonctionne?
Si oui, veux tu le simplifier?
Si non, que se passe t il?
theopom
Messages postés
51
Date d'inscription
mardi 8 mars 2011
Dernière intervention
25 septembre 2018
-
Hum, j'ai crée un petit programme à part et cela à l'air de fonctionné.

Public Class Form1

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form2.Show()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If My.Settings.SaveApp = "" Then
            MsgBox("Vous ne pouvez pas lancer car le chemin d'accès n'est pas indiqué", MsgBoxStyle.Critical, ("Impossible de lancer"))
        Else
            Dim startInfo As ProcessStartInfo = New ProcessStartInfo(My.Settings.SaveApp)
            Process.Start(startInfo)
            If My.Settings.SaveCheck = False Then
            Else
                Dim startInfo1 As ProcessStartInfo = New ProcessStartInfo(My.Settings.SaveApp2)
                Process.Start(startInfo1)
            End If
        End If
    End Sub
End Class


Public Class Form2


    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If My.Settings.SaveCheck = True Then
            CheckBox1.Checked = True
        Else
            CheckBox1.Checked = False
        End If
        TextBox1.Text = My.Settings.SaveApp
        TextBox2.Text = My.Settings.SaveApp2
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Title = "Choisissez "
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then TextBox1.Text = a
        If a <> "" Then My.Computer.Clipboard.SetText(a)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        OpenFileDialog1.Title = "Choisissez "
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then TextBox2.Text = a
        If a <> "" Then My.Computer.Clipboard.SetText(a)
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If CheckBox1.Checked = True Then
            My.Settings.SaveCheck = True
        Else
            My.Settings.SaveCheck = False
        End If
        My.Settings.SaveApp = TextBox1.Text
        My.Settings.SaveApp2 = TextBox2.Text
        My.Settings.Save()
        Close()
    End Sub

End Class


Comment ca on peut le simplifier ?
Whismeril
Messages postés
12373
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
-
Déjà ça
        If My.Settings.SaveCheck = True Then
            CheckBox1.Checked = True
        Else
            CheckBox1.Checked = False
        End If


Se résume à
 CheckBox1.Checked = My.Settings.SaveCheck 
.

Ensuite
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        OpenFileDialog1.Title = "Choisissez "
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then TextBox1.Text = a
        If a <> "" Then My.Computer.Clipboard.SetText(a)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        OpenFileDialog1.Title = "Choisissez "
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then TextBox2.Text = a
        If a <> "" Then My.Computer.Clipboard.SetText(a)
    End Sub


C'est 2 fois la même chose, donc c'est 2 fois à corriger en cas d'erreur ou de changement. Donc c'est pas bien.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
        OpenFileDialog1.Title = "Choisissez "
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then
            If CType(sender, TextBox).Name = "Button1" Then
                  TextBox1.Text = a
            Else
                  TextBox1.Text = a
            End if 
            My.Computer.Clipboard.SetText(a)
        End if
    End Sub
devrait fonctionner, j'ai tapé de tête donc pas sûr qu'il n'y ait pas une boulette

Enfin pour
        If CheckBox1.Checked = True Then
            My.Settings.SaveCheck = True
        Else
            My.Settings.SaveCheck = False
        End If

même principe qu'au début
My.Settings.SaveCheck = CheckBox1.Checked
theopom
Messages postés
51
Date d'inscription
mardi 8 mars 2011
Dernière intervention
25 septembre 2018
-
En effets, je vous remercie beaucoup, cela étant dis pour les openfiledialog je préfère garder cela comme c'est car j'ai changer la valeur "Title" que j'ai pas montre ici.
Mais je vous remercie beaucoup, je vais commencer le cours que vous m'avez indiquer
Whismeril
Messages postés
12373
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
-
Même si tu as changé le titre, il est plus que préférable de n’avoir qu’un code.

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click

        Dim tbx as TextBox = TextBox1
        Dim titre as String = "Titre 1 "
        If CType(sender, Button).Name = "Button2" Then
                  tbx = TextBox2
                  titre = "Titre 2 "
        End If
          
        OpenFileDialog1.Title = titre
        OpenFileDialog1.Filter = "exe|*.exe"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.InitialDirectory = "c:\"
        OpenFileDialog1.ShowDialog()
        Dim a As String
        a = OpenFileDialog1.FileName
        If a <> "" Then
            Tbx.Text = a
            My.Computer.Clipboard.SetText(a)
        End if
    End Sub
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.