Vb.net Multi Combobox calculable

Résolu
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016 - 1 mai 2012 à 13:12
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 - 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 :)

17 réponses

geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
2 mai 2012 à 22:46
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
3
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
1 mai 2012 à 19:04
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.
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
1 mai 2012 à 19:44
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


???
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
1 mai 2012 à 22:10
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
1 mai 2012 à 22:33
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.
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
2 mai 2012 à 11:47
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
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 11:56
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.
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
2 mai 2012 à 12:32
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
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 15:02
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.
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
2 mai 2012 à 20:35
merci , cest claire et bien structurer , pourtant ca ne fonctionne pas chez moi
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 20:38
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.
0
geoffreyjt Messages postés 26 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 février 2016
2 mai 2012 à 21:45
ok , jatend de vos nouvelles , je cherche toujours de mon coter :)
et merci
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 21:49
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.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 21:53
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.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 21:55
L'hyperlien est HS, copie le lien

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

hihihi quand on veux aller trop vite
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
2 mai 2012 à 22:55
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.
0
Rejoignez-nous