none
Valeur d'un TextBox selon Item d'un ComboBox (40 Items dans le ComboBox) RRS feed

  • Question

  • Bonjour dans un form j'ai un ComboBox qui contient 40 Items.

    Un TextBox affiche selon l'item du ComboBox Choisi soit : "F" ou "VPF".

    L'idée de code est :

    If ComboBox1.text = "Item1" then

    TextBox1.Text= "F"

    If ComboBox1.text = "Item2" then

    TextBox1.Text= "VPF"

    etc....ect...ect...

    Dois-je faire ceci pour les 40 Items ou existe-il un moyen plus rapide genre :

    If ComboBox.text = Item1,Item5,Item15,Item20...... then

    TextBox1.text="F"

    else

    text.box1.text="VPF"

    ??? merci de votre aide


    JF Collombet ® CreateSpecificCulture

    mardi 15 mars 2016 15:45

Réponses

  • C'est un ComboBox, vous avez accès à ce qui est sélectionné avec ProduitCombo.selectedIndex

    Donc.... si vous ne maitrisez pas la logique selectedIndex -> FouVPF.text

    faites comme ceci:

    ajoutez pour chacun de vos item la destination "Bardière Carton VPF", "Carrés China F" et dans votre logique traitez le nom

    Dim TexteSelectionne As String = ComboBox2.Items(ComboBox2.SelectedIndex).ToString
            If TexteSelectionne.Contains("VPF") = True Then
                FouVPF.Text="VPF"
            Else
                FouVPF.Text="F"
            End If




    mardi 15 mars 2016 16:46

Toutes les réponses

  • Bonjour,

    Vous pouvez vous baser sur l'index, par exemple en C#:

    TextBox1.Text = ((ComboBox1.SelectedIndex & 1) == 0) ? "F" : "VPF";

    Pour tous les nombres impairs, l'expression
    (ComboBox1.SelectedIndex & 1)
    retourne 1.

    Cordialement
    Gérard


    • Modifié GP79 mardi 15 mars 2016 16:33
    mardi 15 mars 2016 16:06
  • Utilisez l'événement du ComboBox lors de la sélection:

     Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
          'Process sur le ComboBox1.SelectedIndex
            Debug.Print("SelectedIndexChanged à index =" & ComboBox1.SelectedIndex & Environment.NewLine)
        End Sub


    Et encore vous utilisez le Keyword du contrôle comme nom de contrôle: ComboBox.text.... à proscrire!!!

    nommez votre combobox et faites:

    TexteSelectionne =  MonCombox.Items(MonCombox.selectedindex).ToString


    mardi 15 mars 2016 16:14
  • Merci pour ce code, mais en fait mon ComboBox est composé de Nom classés par Ordre Alphabétique, donc pas forcément une histoire de pair ou impair

    JF Collombet ® CreateSpecificCulture

    mardi 15 mars 2016 16:15
  • Je ne vois pas bien le but du code ?

    JF Collombet ® CreateSpecificCulture

    mardi 15 mars 2016 16:22
  • Voici un bout de ce que contient mon ComboBox :

     <ComboBoxItem>Bardière Carton</ComboBoxItem>
                <ComboBoxItem>Bardière VPF</ComboBoxItem>
                <ComboBoxItem>Carrés China VPF</ComboBoxItem>
                <ComboBoxItem>carré china</ComboBoxItem>
                <ComboBoxItem>Carré S/OS</ComboBoxItem>

    et voici l'idée de code: sauf que dans le 1er bloc IF il faut que je référencie à peu prés 25 Items!

       If ProduitCombo.Text = "Bardière Carton" OrElse ProduitCombo.Text = "Bardière VPF" Then
                FouVPF.Text = "VPF"
            Else
                FouVPF.Text = "F"
            End If


    JF Collombet ® CreateSpecificCulture

    mardi 15 mars 2016 16:28
  • De la manière dont vous posez votre question, il me semblait que pour chaque item vous associez alternativement F ou VPF, c'est tout. Mon programme répond juste à ce problème.

    Item1 F
    Item2 VPF
    Item3 F
    Item4 VPF etc.

    Cordialement

    Gérard

    mardi 15 mars 2016 16:33
  • C'est un ComboBox, vous avez accès à ce qui est sélectionné avec ProduitCombo.selectedIndex

    Donc.... si vous ne maitrisez pas la logique selectedIndex -> FouVPF.text

    faites comme ceci:

    ajoutez pour chacun de vos item la destination "Bardière Carton VPF", "Carrés China F" et dans votre logique traitez le nom

    Dim TexteSelectionne As String = ComboBox2.Items(ComboBox2.SelectedIndex).ToString
            If TexteSelectionne.Contains("VPF") = True Then
                FouVPF.Text="VPF"
            Else
                FouVPF.Text="F"
            End If




    mardi 15 mars 2016 16:46
  • Une solution consisterait à remplir votre combobox par des objets plutôt que par des string genre :

    Public Class MaClass
    Public Property Name as String
    Public Property Abreviation as String
    End Class

    Puis vous remplissez votre combobox avec une List de MaClass (avec la prop DisplayText à Name)
    Et dans l'event SelectedItemChanged, vous faites un casting sur l'item selectionné :

    Dim maClassInstance = DirectCast(...., MaClass)
    TextBox.Text = maClassInstance.Abreviation 


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mardi 15 mars 2016 17:53