none
Sauvegarder Listbox Items avec my.settings RRS feed

  • Question

  • Bonjours a tous,

    voici mon problème. Je voudrais tout simplement pouvoir enregistrer les éléments de ma listbox pour que quand je quitte l'application puis la redémare, les éléments de la listbox sont toujours dans la listbox après le redémarrage.

    voici comment j'ai esseyer mais cela ne fonctionne pas:

    My.Settings.listbox = TextBox1.Text
                    My.Settings.Save()
                    Me.Close()

    Comment faire sil vous plait?

    Merci d'avance de votre aide

    samedi 8 septembre 2012 17:52

Réponses

  • qu'est-ce qui ne marche pas ?

    Bon on va faire à l'ancienne :

    Faite un nouveau projet, ajoutez un ListeBox nommé maListBox.

    Ajoutez un TextBox nommé monTexte

    Ajoutez 2 Button nommés Button1 et Button2

    Ouvrez les propriétés de votre projet puis ajoutez un paramètre de nommé maListBox qui pour type System.Collection.Array. Vous pouvez l'ajoute en affichant la liste déroulante puis en cliquant sur parcourir (dernier de la liste). La portée doit être utilisateur.

    Ensuite ouvrez le fichier Form1.vb dans VB Express vous devriez avoir quelque chose du genre :

    Dim _list As New ArrayList()

    'Ajoute un élément dans la liste Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click list.Add(monTexte.Text) monTexte.Clear() maListBox.DataSource = list.ToArray().ToList() End Sub 'Sauvegarde la liste dans les paramètres Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click My.Settings.maListBox = list My.Settings.Save() End Sub 'Charge la liste à l'ouverture de la fenêtre Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not My.Settings.maListBox Is Nothing Then
                'avant
                'maListBox.DataSource = My.Settings.maListBox.ToArray().ToList()
                'après
                list = My.Settings.maListBox
                maListBox.DataSource = list.ToArray().ToList()
            End If End Sub

    Par ailleurs j'ai fait une erreur dans mon code (au Form1_Load), donc j'ai corrigé avec celui ci-dessus.

    La fenêtre :

    Résultat :

    Hope this help


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !





    • Modifié Lyamine mercredi 19 septembre 2012 17:36
    • Proposé comme réponse Aurel Bera jeudi 20 septembre 2012 06:58
    • Marqué comme réponse Aurel Bera jeudi 20 septembre 2012 14:26
    vendredi 14 septembre 2012 16:24

Toutes les réponses

  • Bonjour,

    La réponse se trouve dans ce thread

    Tu peux télécharger un exemple ici.


    fred on youTube

    fred


    • Modifié fred75 dimanche 9 septembre 2012 13:12
    dimanche 9 septembre 2012 13:10
  • Mais cela n'a rien avoir avec une listbox. Je voudrais tout simplement un code pour sauvegarder ma listbox avec my settings. 

    Dew Ciel

    dimanche 9 septembre 2012 13:20
  • Bonjour,

    le principe est le même pour des data provenant d'une ListBox

    A priori les settings enregistrent des propriétés et non des données.


    fred on youTube

    fred

    dimanche 9 septembre 2012 17:29
  • Bonjour,

    Dans les propriétés de projet niveau Settings, il faut définir un type list of (List<wwww>) puis lors de la sauvegarde de votre liste faire un cast vers un List<wwww>. Attention le type de liste doit être identique à celui du Settings.

    Exemple votre listbox contient que des chaînes, il faudra List<String> (C#) ou List Of String (VB si je me trompe pas). Donc si vous avez une classe il faudra aussi faire List<MaClasse>...

    Je suis à disposition pour plus d'info.


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    lundi 10 septembre 2012 09:14
  • Je n'ai pas tout suivie car je suis encore un débutant en programmation sur visual basic. un exemple de code me serait bien utile.

    Merci d'avance de votre réponse.


    Dew Ciel

    lundi 10 septembre 2012 15:22
  • Voici le fichier de code d'exemple Exemple de code sous VS 2008

    J'ai fait vite fait, mais ça réponde à vos besoin je pense. Bien sur ce n'est pas la méthode la plus appropriée mais l'exemple vous montre comment faire.

    Vous pouvez voir dans les propriétés de projet que j'ai choisi une autre classe que les génériques proposées.

    Je reste disponible pour toute info supplémentaire !


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    mardi 11 septembre 2012 10:02
  • J'ai télécharger votre fichier mais en ouvrant le fichier visual basic je ne peut pas car j'utilise Visual Basic expresse 2010 et votre fichier est de celui de 2008 et le système de conversion de fichier m'indique que la conversion est impossible. donc au final je ne peut pas ouvrir votre fichier. 

    Dew Ciel

    mardi 11 septembre 2012 16:01
  • J'ai télécharger votre fichier mais en ouvrant le fichier visual basic je ne peut pas car j'utilise Visual Basic expresse 2010 et votre fichier est de celui de 2008 et le système de conversion de fichier m'indique que la conversion est impossible. donc au final je ne peut pas ouvrir votre fichier. 

    Dew Ciel

    Lien de la version 2010

    VS 2010

    En cas de soucis n'hésitez pas à revenir


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !


    • Modifié Lyamine mardi 11 septembre 2012 21:02 correction lien
    mardi 11 septembre 2012 21:01
  • Bonjour,

    Est-ce que vous avez testé  le lien proposé ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 14 septembre 2012 14:45
  • sa ne marche pas non plus

    Dew Ciel

    vendredi 14 septembre 2012 16:14
  • qu'est-ce qui ne marche pas ?

    Bon on va faire à l'ancienne :

    Faite un nouveau projet, ajoutez un ListeBox nommé maListBox.

    Ajoutez un TextBox nommé monTexte

    Ajoutez 2 Button nommés Button1 et Button2

    Ouvrez les propriétés de votre projet puis ajoutez un paramètre de nommé maListBox qui pour type System.Collection.Array. Vous pouvez l'ajoute en affichant la liste déroulante puis en cliquant sur parcourir (dernier de la liste). La portée doit être utilisateur.

    Ensuite ouvrez le fichier Form1.vb dans VB Express vous devriez avoir quelque chose du genre :

    Dim _list As New ArrayList()

    'Ajoute un élément dans la liste Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click list.Add(monTexte.Text) monTexte.Clear() maListBox.DataSource = list.ToArray().ToList() End Sub 'Sauvegarde la liste dans les paramètres Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click My.Settings.maListBox = list My.Settings.Save() End Sub 'Charge la liste à l'ouverture de la fenêtre Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not My.Settings.maListBox Is Nothing Then
                'avant
                'maListBox.DataSource = My.Settings.maListBox.ToArray().ToList()
                'après
                list = My.Settings.maListBox
                maListBox.DataSource = list.ToArray().ToList()
            End If End Sub

    Par ailleurs j'ai fait une erreur dans mon code (au Form1_Load), donc j'ai corrigé avec celui ci-dessus.

    La fenêtre :

    Résultat :

    Hope this help


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !





    • Modifié Lyamine mercredi 19 septembre 2012 17:36
    • Proposé comme réponse Aurel Bera jeudi 20 septembre 2012 06:58
    • Marqué comme réponse Aurel Bera jeudi 20 septembre 2012 14:26
    vendredi 14 septembre 2012 16:24
  • Bonjour,

    Est-ce que vous avez testé  le lien proposé ? Merci de partager avec nous les résultats,afin qued'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 19 septembre 2012 13:29
  • J'ai suivi vos instruction mais j'ai plusieurs soucis:

    1: pour la propriété maListBox je n'ai pas trouvé pour type: System.Collection.Array, mais: System.Collection.ArrayList. je ne sais pas si sa change quelque chose mais en tout cas je ne trouve pas l'autre.

    2: et aussi quand j'ai entré votre code il me souligne en bleu a chaque fois le mot "list" apparaît. comme sa (je les ai souligné et mis en gras) que dois-je faire pour contourner ce problème? merci de votre réponse.  :

    Public Class Form1

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            List.Add(monTexte.Text)
            monTexte.Clear()
            maListBox.DataSource = List.ToArray().ToList()
        End Sub

        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            My.Settings.maListBox = List
            My.Settings.Save()
        End Sub

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            If Not My.Settings.maListBox Is Nothing Then
                'avant
                'maListBox.DataSource = My.Settings.maListBox.ToArray().ToList()
                'après
                List = My.Settings.maListBox
                maListBox.DataSource = List.ToArray().ToList()
            End If
        End Sub
    End Class


    Dew Ciel

    mercredi 19 septembre 2012 14:39
  • J'ai suivi vos instruction mais j'ai plusieurs soucis:

    1: pour la propriété maListBox je n'ai pas trouvé pour type: System.Collection.Array, mais: System.Collection.ArrayList. je ne sais pas si sa change quelque chose mais en tout cas je ne trouve pas l'autre.

    2: et aussi quand j'ai entré votre code il me souligne en bleu a chaque fois le mot "list" apparaît. comme sa (je les ai souligné et mis en gras) que dois-je faire pour contourner ce problème? merci de votre réponse.  :

    Public Class Form1

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            List.Add(monTexte.Text)
            monTexte.Clear()
            maListBox.DataSource = List.ToArray().ToList()
        End Sub

        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            My.Settings.maListBox = List
            My.Settings.Save()
        End Sub

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            If Not My.Settings.maListBox Is Nothing Then
                'avant
                'maListBox.DataSource = My.Settings.maListBox.ToArray().ToList()
                'après
                List = My.Settings.maListBox
                maListBox.DataSource = List.ToArray().ToList()
            End If
        End Sub
    End Class


    Dew Ciel

    Bonjour,

    C'est normal List est réservé, List Of <object>.

    maListBox n'est pas un Array c'est un Contrôle ListBox que vous trouverez dans la boite à outils de VS.

    Effectivement j'ai mis "list" dans mon code. Désolé reflex C# :/

    Renommez list par _list.

    En plus en variable de classe mettre :

    Dim _list As New ArrayList()

    Oui c'est bien ArrayList qu'il faut choisir, j'avais pas fini de compléter car je codais en même temps que j'écrivais :/ et je travaillais sur autre chose. Comme suit :

    J'ai mis à jour le code précédemment ajouté.

    Encore désolé


    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !



    • Modifié Lyamine mercredi 19 septembre 2012 17:41 complément
    mercredi 19 septembre 2012 17:36
  • Merci infiniment car ça marche exactement comme je le voulais. merci beaucoup de votre aide. :D

    Dew Ciel

    mercredi 19 septembre 2012 18:49
  • Merci infiniment car ça marche exactement comme je le voulais. merci beaucoup de votre aide. :D

    Dew Ciel


    Pouvez-vous valider en proposition SVP ;)

    Merci de valider par "Proposer comme réponse" si celle-ci répond a votre demande !

    mercredi 19 septembre 2012 19:25
  • Bonjour,

    Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?

    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 20 septembre 2012 14:26