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 :

Remplir un combobox avec les items d'un listbox


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut Remplir un combobox avec les items d'un listbox
    Hello a tous,

    je dois remplir une combobox avec les elements d'un listbox

    actuellement cela fonctionne correctement avec quelques éléments, mais je dois pouvoir gérer le millier d'élément. et la il me faut 20 sec pour lire les élements de ma combobox

    pour le moment elle est remplir via une boucle
    et un cboElement.addItem(lstTarget........

    Comment pourrais-je passer les élements de l'un a l'autre de manière plus rapide?

    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Salut,

    Tu devrais pouvoir faire un truc comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taCombo.Items .AddRange(taListBox.Items)

  3. #3
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Bonjour,
    as tu essayé de conserver un tableau de string?
    ça peux être plus rapide que de traiter un Objet tel que la ListBox.

    Après j'ai une question,
    je dois pouvoir gérer le millier d'élément
    Quel intérêt dans une lisBox ou une ComboBox?
    je vois mal le gars faire 100-200 tour de molettes pour arriver en bas

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim items(ListBox1.Items.Count - 1) As Object
            ListBox1.Items.CopyTo(items, 0)
            ComboBox1.Items.AddRange(items)
    mais écoute les conseilles de hunteshiva

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Points : 76
    Points
    76
    Par défaut
    ok ok merci pour vos info,

    je pense avoir trouver le problème

    mon composant est un composant modifier dont la fonction addItem à été revue afin de permettre l'affichage multi-colonne.

    et des split de donnée.

    On a pu remarquer que a chaque ajout d'un element le temps de travail de la fonction augmente.

    et pas simple de trouver pourquoi

    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
    Dim ds As DataSet = Nothing
                Dim dr As DataRow = Nothing
                Dim Elem As String
                Dim ElemCol As Integer = 0
     
                Try
                    If Item Is Nothing Then
                        Return False
                    End If
     
                    'Verification of the mode before continue
                    If DataMode <> DATAMODE_ENUM.ssDataModeAddItem Then
                        Throw New Exception("You're not in DataModeAddItem. So you can't add new Item.")
                        Exit Function
                    End If
     
                    If MyBase.DataSource Is Nothing Then
                        ds = New DataSet
                    Else
                        ds = CType(MyBase.DataSource, DataSet)
                    End If
     
                    If (ds.Tables.Count) = 0 Then ds.Tables.Add()
                    dr = ds.Tables(0).NewRow
                    ds.Tables(0).Rows.Add(dr)
     
                    For i As Integer = Item.Split(Char.Parse(",")).Length - 1 + Item.Split(Char.Parse(";")).Length To dr.Table.Columns.Count + 1 Step -1
                        dr.Table.Columns.Add()
                    Next
     
                    For Each Elem In Item.Split(Char.Parse(","))
                        dr(ElemCol) = Elem
                        ElemCol = ElemCol + 1
     
                        For j As Integer = 1 To Elem.Split(Char.Parse(";")).Length - 1
                            If Cvn(dr(ElemCol - 1)).IndexOf(";"c) > -1 Then
                                dr(ElemCol - 1) = EsaLeft(Cvn(dr(ElemCol - 1)), Cvn(dr(ElemCol - 1)).IndexOf(";"c))
                            End If
                            dr(ElemCol) = Elem.Split(Char.Parse(";"))(j)
                            ElemCol = ElemCol + 1
                        Next
     
                    Next
     
                        MyBase.DisplayMember = Nothing
                        MyBase.DataSource = ds
     
                        Me.ColumnsAutoWidth(1)
     
                    Me.VisibleCols = Item.Split(Char.Parse(",")).Length
     
                        ' make sure that the column headers will be visible or not
                        MyBase.Rows.Band.ColHeadersVisible = _blnHeadersVisible
     
                        Return True
     
                Catch ex As Exception
                    efwErrHandler(ex)
                    Return False
                End Try

Discussions similaires

  1. [XL-2010] PB remplir une ComboBox avec les valeurs de plusieurs cellules sur la même lignes
    Par eviuss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2014, 07h01
  2. Remplir une comboBox avec les polices système
    Par rillette87 dans le forum Flex
    Réponses: 2
    Dernier message: 15/04/2011, 16h02
  3. Réponses: 1
    Dernier message: 18/08/2010, 08h09
  4. remplir un comboBox avec les dates de la semaine courante et glissante
    Par k6971 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 25/05/2007, 10h11
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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