IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Listbox et radiobutton


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut Listbox et radiobutton
    J’ai un petit exercice à faire
    Je saisis une valeur chiffre dans une texte box que ensuite je rajoute a une listbox credit si un radiobutton credit est coché ou à une list box debit si un radiobutton debit est coche grâce à un button click
    Au fur et à mesure les valeurs saisies sont rentrées dans la list credit ou dans la liste debit

    Çà je sais faire
    Ensuite on me demande de coder un button click pour retirer la dernière écriture et là je coince un peu
    Voici le code corrigé qui m’est donné et que je comprends mal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Public Class Form1
        Inherits System.Windows.Forms.Form
        Dim a, b As Integer 
       Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            End
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                a = CInt(Me.TextBox1.Text)
                If Me.RadioButton1.Checked Then
                    Me.ListBox1.Items.Add(Me.TextBox1.Text)
                    Me.ListBox2.Items.Add("0")
                    col1.Add("0")
                    col.Add(Me.TextBox1.Text)
                Else
                    Me.ListBox2.Items.Add(Me.TextBox1.Text)
                    Me.ListBox1.Items.Add("0")
                    col.Add("0")
                    col1.Add(Me.TextBox1.Text)
                End If
                Dim totalc As Integer
                For i As Integer = 1 To col.Count
                    a = col.Item(i)
                    totalc = totalc + CInt(a)
                Next
                Me.Label7.Text = totalc
                Dim totald As Integer
                For i As Integer = 1 To col1.Count
                    a = col1.Item(i)
                    totald = totald + CInt(a)
                Next
                Me.Label8.Text = totald
                Me.Label9.Text = totalc - totald
            Catch ex As Exception
                MsgBox("données non valide")
            End Try
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.RadioButton1.Checked = True
            Me.Label7.Text = 0
            Me.Label8.Text = 0
            Me.Label9.Text = 0
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Try
                Me.ListBox1.Items.Clear()
                a = col.Count
                col.Remove(a)
                For i As Integer = 1 To col.Count
                    Me.ListBox1.Items.Add(col.Item(i))
                Next
                Me.ListBox2.Items.Clear()
                a = col1.Count
                col1.Remove(a)
                For i As Integer = 1 To col1.Count
                    Me.ListBox2.Items.Add(col1.Item(i))
                Next
                Dim totalc As Integer
                For i As Integer = 1 To col.Count
                    a = col.Item(i)
                    totalc = totalc + CInt(a)
                Next
                Me.Label7.Text = totalc
                Dim totald As Integer
                For i As Integer = 1 To col1.Count
                    a = col1.Item(i)
                    totald = totald + CInt(a)
                Next
                Me.Label8.Text = totald
                Me.Label9.Text = totalc - totald
            Catch ex As Exception
                MsgBox("la liste est vide")
            End Try
        End Sub
    End Class
    Je m’apercois que j’ai oublié les formules de politesse

    Bonjour merci d’avance et cordialement

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    La ligne de code suivante réalise la suppression de la dernière ligne de la ListBox npommée UneListBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UneListBox.Items.RemoveAt(UneListBox.Items.Count - 1)
    ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut Suite de listbox et radiobutton
    Merci de votre réponse
    Mais si l’avant derniere valeur rentree est en credit et la derniere en debit ou le contraire
    Comment rédiger un code qui va enlever la derniere entree (dans le temps )
    À moins de faire deux lignes une pour enlever la derniere entree de la liste debit et une ligne pour enlever la derniere entree de la liste credit
    Mais cela ne me semble pas être ce qui est demandé dans l’exercice et le code proposé pour le button 2 me parait pour le moins brouillardeux
    Merci d’une réponse cordialement

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Perso, je déclarais une variable "TemoinDernierLB" au niveau de la classe (là où tu déclares a et b).
    Cette variable de type Byte (par exemple) serait affectée 0 ou 1 chaque fois qu'on ajoute une ligne dans un des ListBox :
    0 pour le ListBox "Crédit"
    1 pour le ListBox "Débit".
    Tu peux alors consulter cette variable chaque fois que tu veux savoir quel ListBox a été affecter en dernier.
    Bon amusement ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 19
    Par défaut list box toujours
    bonjour en demande de conseil à Phil Rob

    j'ai donc une petite application avec une valeur numérique que j'entre dans une text box et après ,avec le bouton ecrire et après avoir coché un radio bouton à crédit ou débit je rentre cette valeur dans une listbox crédit ou dans une listbox débit
    tout marche et en bas dans un label il affiche le total des crédits et des débits
    quand je veux retirer une valeur si j'ai rentré trois fois de suite une valeur en crédit et trois fois de suite une valeur en débit quand je click sur le bouton annuler il retire une valeur de la liste débit et affiche le nouveau total et si je reclique il l'enlève et diminue le total d'autant et quand il arrive à plus de valeur il m'affiche o valeurs dans la listbox et un total de 0 mais ne passe pas vers la colonne credit ou je voudrais enlever desvaleurs aussi
    j'ai beaucoup ramé mais sans succès en fait la variable public que vous m'avez conseillé de créer ne permet pas après de passer à la listbox débit
    en plus mon code me parait un peu tiré par les cheveux mais je suis très débutant
    a l'avance merci
    cordialement
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
     
     
    Public Class Form1
        Public cc As Byte
     
     
     
     
        Private Sub RB_DEBIT_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RB_DEBIT.CheckedChanged
     
        End Sub
        Private Sub RB_CREDIT_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RB_CREDIT.CheckedChanged
     
        End Sub
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub BT_ECRIRE_Click(sender As System.Object, e As System.EventArgs) Handles BT_ECRIRE.Click
            Dim a, b As Integer
            Dim totalc, totald As Double
     
     
     
            If (RB_CREDIT.Checked) Then
                LTB_CREDIT.Items.Add(TXT_SAISIE.Text)
                TXT_SAISIE.Clear()
                a = LTB_CREDIT.Items.Count
                For i As Integer = 0 To (a - 1) Step 1
                    totalc = totalc + LTB_CREDIT.Items(i)
                Next
                LBL_TOTCRED.Text = totalc
                cc = 0
     
            ElseIf (RB_DEBIT.Checked) Then
                LTB_DEBIT.Items.Add(TXT_SAISIE.Text)
                TXT_SAISIE.Clear()
                b = LTB_DEBIT.Items.Count
                For i As Integer = 0 To (b - 1) Step 1
                    totald = totald + LTB_DEBIT.Items(i)
                Next
                LBL_TOTDEB.Text = totald
                cc = 1
     
            End If
        End Sub
     
        Private Sub GroupBox3_Enter(sender As System.Object, e As System.EventArgs) Handles GroupBox3.Enter
     
        End Sub
     
        Private Sub BTN_QUITTER_Click(sender As System.Object, e As System.EventArgs) Handles BTN_QUITTER.Click
            End
        End Sub
     
        Private Sub BT_ANNULER_Click(sender As System.Object, e As System.EventArgs) Handles BT_ANNULER.Click
     
            Dim i As Integer
            Dim totalac, totalad As Double
     
            If cc = 0 Then
     
                LTB_CREDIT.Items.RemoveAt(LTB_CREDIT.Items.Count - 1)
                For i = (LTB_CREDIT.Items.Count - 1) To 0 Step -1
                    totalac = totalac + LTB_CREDIT.Items(i)
                    LBL_TOTCRED.Text = totalac
                Next
                LBL_TOTCRED.Text = totalac
     
            ElseIf cc = 1 Then
     
                LTB_DEBIT.Items.RemoveAt(LTB_DEBIT.Items.Count - 1)
                For i = (LTB_DEBIT.Items.Count - 1) To 0 Step -1
                    totalad = totalad + LTB_DEBIT.Items(i)
                    LBL_TOTDEB.Text = totalad
                Next
     
                LBL_TOTDEB.Text = totalad
     
            End If
     
        End Sub
     
        Private Sub LTB_DEBIT_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles LTB_DEBIT.SelectedIndexChanged
     
        End Sub
     
        Private Sub GroupBox1_Enter(sender As System.Object, e As System.EventArgs) Handles GroupBox1.Enter
     
        End Sub
    End Class

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,
    Je vois que tu as suivi mon conseil précédent et que tu as implémenté une variable témoin (que tu as nommées cc) pour connaître laquelle des 2 ListBox est affectée en dernier.
    Maintenant, cette info ne te suffit plus : tu veux savoir quelle ListBox est affectée en dernier, mais aussi laquelle a été affectée avant la derrière, et aussi celle affectée avant l'avant-dernière, et aussi..., jusqu'à la première.
    Dans cette situation j’abandonnerais ma variable témoin (cc) et j'utiliserais un tableau cc(). Comme on ne sait pas d'avance combien d’affectations auront lieu, il faut gérer ce tableau dynamiquement.
    Soit déclaration du tableau (à la place de ta variable cc, note qu'il n'est pas nécessaire qu'elle soit Public, à cet endroit de la déclaration, elle est connue de toute la classe et cela suffit) :
    A chaque affectation d'une ListBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cc(cc.count - 1) = 0 ' 0 ou 1 : Affectation au dernier indice disponible de 0 ou 1 selon qu'il s'agisse de la listBox des Crédit ou celle des Débit.
    Redim Preserve cc(cc.count) ' préparer la place pour la prochaine affectation
    La dernière ListBox affectée est désignée par cc(cc.count - 1), de la même façon que le fait actuellement ta variable cc.

    Pour répondre au problème exprimé par ta dernière question, il faut tenir le tableau à jour en cas de suppression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ' Suppression la dernière ligne de la ListBox désignée par cc(cc.count - 1)
    ' Par exemple :
    '        ElseIf cc(cc.count - 1) Then
    '            LTB_DEBIT.Items.RemoveAt(LTB_DEBIT.Items.Count - 1)
     
                  Redim Preserve cc(cc.count - 1) ' Retirer la dernière valeur utilisée puisque devenue inutile après suppression de la ligne
     
    '            ..................................
    Quand tu supprimeras la dernière ligne de la dernière ListBox, Redim Preserve cc(cc.count - 1) videra le tableau et son Count vaudra 0 et à l'entrée de la procédure BT_ANNULER_Click, tu peux utilement insérer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If cc.count < 1 Then 
    Exit Sub
    End If
    Je n'ai rien testé de tout ce code mais tu ne devrais pas avoir trop de difficultés à l’implémenter.

    Bon amusement ...

Discussions similaires

  1. [Débutant] Lier un radioButton à la valeur de l'item sélectionné d'une listBox
    Par Jean-Marc68 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 29/09/2014, 14h31
  2. radiobutton dans une listbox
    Par ola-oz dans le forum C#
    Réponses: 8
    Dernier message: 25/08/2010, 14h46
  3. RadioButton dans un listbox : IsEnable=False
    Par toss.net dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 31/01/2010, 17h46
  4. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  5. controle listbox avec radiobuttons
    Par gbardy dans le forum MFC
    Réponses: 2
    Dernier message: 28/08/2006, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo