Vb.net Multi Combobox calculable [Résolu]

geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 1 mai 2012 à 13:12 - Dernière réponse : ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention
- 2 mai 2012 à 22:55
bonjours a tous
je suis un débutant et j'aimerais faire :

'''''''''''''''''''''''''''''''''''''''''''
Dim DTSNomDuReleaser28C As New DataSet
DTSNomDuReleaser28C.ReadXml(CheminDeBD)
Dim TableNomDuReleaser28C As DataTable = DTSNomDuReleaser28C.Tables("NomDuReleaser28C")
Form2.ComboBoxNomDuReleaser28C.DataSource = DTSNomDuReleaser28C.Tables("NomDuReleaser28C")
Form2.ComboBoxNomDuReleaser28C.DisplayMember = ("Liste")
'''''''''''''''''''''''''''''''''''''''''''
donc ici je lit une base de donnée xml , et puis je place le contenu de ma colonne dans un combobox
j'ai 30 combobox , et je lit donc 30 colonne , mais cela veux dire aussi que le code si dessus je dois le répéter 30 fois
donc je pensais faire un "loop for"

ex:

'''''''''''''''''''''''''''''''''''''''''''
for indexx = 1 to 30
Dim DTSNomDuReleaser As New DataSet
DTSNomDuReleaser.ReadXml(CheminDeBD)
Dim TableNomDuReleaser As DataTable = DTSNomDuReleaser.Tables("NomDuReleaser" & indexx & "C")
Form2.ComboBoxNomDuReleaser & indexx & C.DataSource = DTSNomDuReleaser.Tables("NomDuReleaser" & indexx & "C")
Form2.ComboBoxNomDuReleaser & indexx & C.DisplayMember = ("Liste")
next
'''''''''''''''''''''''''''''''''''''''''''

le problème est quand je veux faire(Form2.ComboBoxNomDuReleaser & indexx & C)
ca ne marche pas , et c'est normale , mais il dois y avoir un moyen

placer "combobox.name" dans une variable , ou autre chose ???

pouvez vous m'aider svp :)
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 22:46
3
Merci
yyyyyeahhhhpiiii :)
merci , grace a vous , j'ai pu obtenir ce que jatendais

Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim cbc As New Collection()
        cbc.Add("1") 'Index Vide
        cbc.Add("2") 'Index Vide
        cbc.Add(ComboBoxNomDuReleaser3C)
        cbc.Add(ComboBoxNomDuReleaser4C)
        cbc.Add(ComboBoxNomDuReleaser5C)
        cbc.Add(ComboBoxNomDuReleaser6C)
        cbc.Add(ComboBoxNomDuReleaser7C)
        cbc.Add(ComboBoxNomDuReleaser8C)
        Dim cb As ComboBox
        For index = 3 To 6
            cb = cbc.Item(index)
            Dim DTSNomDuReleaser As New DataSet
            DTSNomDuReleaser.ReadXml(Form1.CheminDeBD)
            Dim TableNomDuReleaser As DataTable = DTSNomDuReleaser.Tables("NomDuReleaser" & index & "C")
            cb.DataSource = DTSNomDuReleaser.Tables("NomDuReleaser" & index & "C")
            cb.DisplayMember = ("Liste")
        Next
    End Sub


comme ca mon programme va attribuer les bonne colonne de donnée au combobox correspondant , en fonction de son index dans la collection

je sais pas si c'est comme ca qu'on fait , mais ca fonctionne nikkel , encore merci

Merci geoffreyjt 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 1 mai 2012 à 19:04
0
Merci
Bonjour geoffreyjt,

L'indexation d'un objet, ceci :

Dim cb As New Collection() ' débute à 1 'GLOBAL
'
Sub Load...
 cb.Add(combox1)
 ' ...
 cb.Add(combox30)
En Sub ' load
'
Sub utilisation
 cd(x).items.add("ton text, et ou" & taVariable)
end sub


Cordialement, Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 1 mai 2012 à 19:44
0
Merci
merci , pour cette reponce

grace a vous , je sai faire une collection :)
pourtant je bloque sur
'''''''''''''
Sub utilisation
cd(x).items.add("ton text, et ou" & taVariable)
end sub
'''''''''''''
quand je tappe la ligne jai une erreur

doije importer quelque chose ?

jai esayer ceci

Dim cc As New Collection()
cc.Add(ComboBoxNomDuReleaser1C)
' .............
cc.Add(ComboBoxNomDuReleaser30C)
For indexcool = 0 To 29
Dim DTSNomDuReleaser As New DataSet
DTSNomDuReleaser.ReadXml(Form1.CheminDeBD)
Dim TableNomDuReleaser As DataTable = DTSNomDuReleaser.Tables("NomDuReleaser"& indexcool & "C")
cc.index.(indexcool)
cc.DataSource = DTSNomDuReleaser.Tables("NomDuReleaser"& indexcool & "C")
Next


???
Commenter la réponse de geoffreyjt
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 1 mai 2012 à 22:10
0
Merci
le but etant de faire ceci , mais en plus petit :
Dim DTSNomDuReleaser3C As New DataSet
        DTSNomDuReleaser3C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser3C As DataTable = DTSNomDuReleaser3C.Tables("NomDuReleaser3C")
        Form2.ComboBoxNomDuReleaser3C.DataSource = DTSNomDuReleaser3C.Tables("NomDuReleaser3C")
        Form2.ComboBoxNomDuReleaser3C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser4C As New DataSet
        DTSNomDuReleaser4C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser4C As DataTable = DTSNomDuReleaser4C.Tables("NomDuReleaser4C")
        Form2.ComboBoxNomDuReleaser4C.DataSource = DTSNomDuReleaser4C.Tables("NomDuReleaser4C")
        Form2.ComboBoxNomDuReleaser4C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser5C As New DataSet
        DTSNomDuReleaser5C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser5C As DataTable = DTSNomDuReleaser5C.Tables("NomDuReleaser5C")
        Form2.ComboBoxNomDuReleaser5C.DataSource = DTSNomDuReleaser5C.Tables("NomDuReleaser5C")
        Form2.ComboBoxNomDuReleaser5C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser6C As New DataSet
        DTSNomDuReleaser6C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser6C As DataTable = DTSNomDuReleaser6C.Tables("NomDuReleaser6C")
        Form2.ComboBoxNomDuReleaser6C.DataSource = DTSNomDuReleaser6C.Tables("NomDuReleaser6C")
        Form2.ComboBoxNomDuReleaser6C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser7C As New DataSet
        DTSNomDuReleaser7C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser7C As DataTable = DTSNomDuReleaser7C.Tables("NomDuReleaser7C")
        Form2.ComboBoxNomDuReleaser7C.DataSource = DTSNomDuReleaser7C.Tables("NomDuReleaser7C")
        Form2.ComboBoxNomDuReleaser7C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser8C As New DataSet
        DTSNomDuReleaser8C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser8C As DataTable = DTSNomDuReleaser8C.Tables("NomDuReleaser8C")
        Form2.ComboBoxNomDuReleaser8C.DataSource = DTSNomDuReleaser8C.Tables("NomDuReleaser8C")
        Form2.ComboBoxNomDuReleaser8C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser9C As New DataSet
        DTSNomDuReleaser9C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser9C As DataTable = DTSNomDuReleaser9C.Tables("NomDuReleaser9C")
        Form2.ComboBoxNomDuReleaser9C.DataSource = DTSNomDuReleaser9C.Tables("NomDuReleaser9C")
        Form2.ComboBoxNomDuReleaser9C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser10C As New DataSet
        DTSNomDuReleaser10C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser10C As DataTable = DTSNomDuReleaser10C.Tables("NomDuReleaser10C")
        Form2.ComboBoxNomDuReleaser10C.DataSource = DTSNomDuReleaser10C.Tables("NomDuReleaser10C")
        Form2.ComboBoxNomDuReleaser10C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser11C As New DataSet
        DTSNomDuReleaser11C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser11C As DataTable = DTSNomDuReleaser11C.Tables("NomDuReleaser11C")
        Form2.ComboBoxNomDuReleaser11C.DataSource = DTSNomDuReleaser11C.Tables("NomDuReleaser11C")
        Form2.ComboBoxNomDuReleaser11C.DisplayMember = ("Liste")
        Dim DTSNomDuReleaser12C As New DataSet
        DTSNomDuReleaser12C.ReadXml(CheminDeBD)
        Dim TableNomDuReleaser12C As DataTable = DTSNomDuReleaser12C.Tables("NomDuReleaser12C")
        Form2.ComboBoxNomDuReleaser12C.DataSource = DTSNomDuReleaser12C.Tables("NomDuReleaser12C")
        Form2.ComboBoxNomDuReleaser12C.DisplayMember = ("Liste")

parce que je pourai monter jusqua 256 combobox, ca ferai un peux long
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 1 mai 2012 à 22:33
0
Merci
Suite...


Sub utilisation
cd(x).items.add("ton text, et ou" & taVariable)
end sub



C'est pas "cd" mais "cb" (pour ComboBox), je me suis trompé.

Sinon, est-ce que x est déclaré... est-ce que <taVariable> est déclaré ?


Dim cc As New Collection()
cc.Add(ComboBoxNomDuReleaser1C)
' .............
cc.Add(ComboBoxNomDuReleaser30C)
For indexcool = 0 To 29
Dim DTSNomDuReleaser As New DataSet
DTSNomDuReleaser.ReadXml(Form1.CheminDeBD)
Dim TableNomDuReleaser As DataTable = DTSNomDuReleaser.Tables("NomDuReleaser"& indexcool & "C")
cc.index.(indexcool)
cc.DataSource = DTSNomDuReleaser.Tables("NomDuReleaser"& indexcool & "C")
Next



Alors là tu as mal regardé mon exemple :
- Ça commence à 1 et non à 0, comme les objets !
- La syntaxe c'est objet(i).index et non pas objet.index(i) "pour reprendre ton exemple" !


Nota bene, donner un nom d'oiseau aux objets, la majorité des développeurs le fait (pas moi), car si ton code est destiné à être testé ailleurs, ce qui est en l'espèce potentiellement le cas, tu obliges celui qui veut tester à donner le même nom d'oiseau à ses objets ; en conclusion, donner un nom, certes, mais à condition de le conserver pour soi, car écrire :


' combobox 1 à 30 = "fonction qu'ils font"



Ça présente deux avantages, d'indiquer certes quelles est la fonction, mais encore ça va plus vite car y a rien à nommer, et c'est réutilisable par les autres ipso facto...


Cordialement, Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 11:47
0
Merci
oui , x et mavariable son declarer , mais
cest au moment de tapper
cb(x). , normalement en tappant le "." il me propose des fonction comme "add" ou "remove" , ect ...
et je nais pas "index" dans les choix proposer , et si je l'ecrit a la main, il me met une erreur

???
je suis encore plus debutant que je ne le pensais . lol
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 11:56
0
Merci
Mais pourquoi tu veux "Index", c'est censé faire quoi ?

Si on veut par exemple lire l'item(0) du cb(1) "je crois car non testé" :

msgbox(cb(1).items(0))
' cb(1).items(0)


Cordialement, Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 12:32
0
Merci
pardon , je me suis tromper , c'est pas index , c'est items

quand je tappe "msgbox(cb(1).items(0))"

le message ne vien pas car "items ne fait pas partie de (cb)"

faudrai t'il dire a la collection quel va contenir des combobox ?

ex: dim cb as new combobox.collection

pour que chaque element de la collection sois traiter comme un combobox

ex : cb(1).hide pour cacher la combobox 1 de cb
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 15:02
0
Merci
Désolé, c'est de ma faute, je n'ai pas donné un bon code, voici :

En GLOBAL tu déclares une collection d'objets nommée cb


Dim cb As New Collection() ' débute ? 1 GLOBAL


En LOCAL dans le Load... généralement, tu dis à ta collection cb ce qu'elle contient, évidemment on pourrait mélanger les objets mais ça risquerait de compliquer les choses, donc mieux vaut une collection par groupe d'objets. Une fois que l'objet est dans la liste de la collection, l'appel de la collction dans le code offre ipso facto les propriétés de l'objet, ainsi :


cb.Add(Me.ComboBox1)
cb.Add(Me.ComboBox2)
cb.Add(Me.ComboBox3)


Puis in fine en utilisation LOCALE où tu en as besoin :


MsgBox(cb(1).items(0))


Cordialement, Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 20:35
0
Merci
merci , cest claire et bien structurer , pourtant ca ne fonctionne pas chez moi
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 20:38
0
Merci
Faut jamais abandonner en programmation, c'est le plus résistant qui gagne, sauf erreur manifeste, au pire on met de côté...

Je vais te faire un programme et un hyperlien pour le télécharger ici, je reviens...

Cordialement, Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 21:45
0
Merci
ok , jatend de vos nouvelles , je cherche toujours de mon coter :)
et merci
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 21:49
0
Merci
Voici, t'as plus qu'à suivre et copier-coller, c'est testé et ça marche...


' indexation
Option Explicit On
' MISE EN PLACE DES OBJETS
' programme neuf WindowsForm
' form1
' 3 combobox1, 2 et 3
' textbox1
'
Public Class Form1
  ' variables GLOBALES
  Dim cb As New Collection() ' déclaration d'une collection nommé cb
  Dim lindex As Integer = 0 ' index des 3 combo

  Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer = 0
    Dim j As Integer = 0
    Dim hasard As Integer = 0
    Me.Text = " Gestion collection combobox"
    Me.Left = 10
    Me.Top = Me.Left
    cb.Add(Me.ComboBox1) ' contenu des objets de la liste de l'objet cb
    cb.Add(Me.ComboBox2)
    cb.Add(Me.ComboBox3)
    For i = 1 To 3
      For j = 1 To 10
        Randomize() ' remplissage par le pseudo hasard pour l'utilisation
        hasard = Int((122 - 65 + 1) * Rnd() + 65)
        cb(i).items.add(Chr(hasard) & i * j) ' exemple d'ECRITURE
      Next j
    Next (i)
  End Sub

  Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown ' après lancement -> à l'affichage
    Dim i As Integer = 0
    For i = 1 To 3
      cb(i).selectedindex = 0 ' affichage des combos à l'item 0
    Next i
  End Sub

  Sub cb_Click(sender As Object, e As System.EventArgs) Handles ComboBox1.Click, ComboBox2.Click, ComboBox3.Click
    ' ATTENTION : débute seul nom de l'objet + fin prend tous les objets de la collection
    If sender.name "ComboBox1" Then lindex 1 ' récupère l'index du combo d'après son nom
    If sender.name "ComboBox2" Then lindex 2
    If sender.name "ComboBox3" Then lindex 3
    TextBox1.Text = sender.name & "  "
  End Sub

  Sub cb_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged
    Try ' avant l'affichage le combo est considéré vide et sort en erreur, donc on saute en avalant l'erreur
      TextBox1.Text = TextBox1.Text & cb(lindex).text
    Catch ex As Exception
      ' message d'érreur dans d'autres cas... met l'erreur RAZ/RAB
    End Try
  End Sub

End Class




Cordialement, Joe.
Commenter la réponse de ehjoe
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 21:53
0
Merci
Tiens, voici le programme zipé en auto-extractible, là tu ne peux pas dire qu'il ne torune pas

Ici :

http://mesromans.free.fr\indexation.exe

Tapez le texte de l'url ici.

Cordialement, Joe.
Commenter la réponse de ehjoe
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 21:55
0
Merci
L'hyperlien est HS, copie le lien

Joe.
Commenter la réponse de ehjoe
geoffreyjt 26 Messages postés jeudi 26 février 2009Date d'inscription 28 février 2016 Dernière intervention - 2 mai 2012 à 22:48
0
Merci
oups , c'est pas
For index = 3 To 6
mais For index = 3 To 8

hihihi quand on veux aller trop vite
Commenter la réponse de geoffreyjt
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 2 mai 2012 à 22:55
0
Merci
Ben alors valide la réponse comme résolvant la question

Content d'avoir pu te rendre service, mais tu attaques trop gros pour commenceer, (la collction, le combo (qui est un objet susceptible))...

Cordialement, Joe.
Commenter la réponse de ehjoe

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.