La Combobox invisible !

Résolu
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 22 juil. 2008 à 17:25
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010 - 29 juil. 2008 à 10:26
Bonjour,
Je suis en train de réaliser une application (codée en Vb.net sous visual studio 2008), cette dernière est divisée en trois couches (DAL, DAO et interface). Dans l'interface, j'ai une datagridview qui me permet d'afficher des lignes d'une table de ma base de données,  ainsi je souhaite pouvoir modifier ces données. Pour mettre à jour les données de ma table, je veux créer autant de textbox, combobox ... que de colonne. Les combobox étant utilisée afin d'afficher des valeures imposées. J'ai réussi à créer autant de textbox que de colonnes du datagridview. Cependant pour ce qui est des combobox (valeures fixées dépendantes d'autres tables), je les ai crées directement dans l'interface et je les ai cachées avec la fonction visiblefalse dans la form_load. Mon problème est le suivant lorsque je recherche les combobox que je dois afficher (visibletrue), ces dernières ne s'affichent pas. La variable visible reste à false !

Voici le code :
------------------------------------------------------------------------------------------------------------------------------------
'Déclaration de la variable permettant de récupérer un controle correspondant à une colonne de la table.
Dim controlFound As System.Windows.Forms.ComboBox = Nothing
            controlFound = CType(Controls.Item(datagridV.Columns(datagridV.CurrentRow.Cells(i).ColumnIndex).HeaderText), ComboBox)

            'Si on trouve un controle correspondant
            If (controlFound IsNot Nothing) Then
                controlFound.Visible = True
            Else
             [----]
------------------------------------------------------------------------------------------------------------------------------------
Les contrôles sont bien détectés à chaque fois mais n'apparaissent pas dans l'interface. Pouvez-vous m'aider à résoudre mon problème, j'ai tenté beaucoup de choses mais sans succès. Merci d'avance.

Julien

15 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
22 juil. 2008 à 17:44
ComboBox1.Show()












Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur



/B>
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 juil. 2008 à 08:39
ton controle est il bien placé ?
n'est-il pas sous un autre controle ?
3
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 09:09
Bon eh bien je viens de trouver une solution, je ne sais pas pourquoi mais apparemment il faut que je mettes tous les combobox que je veux cacher au début de ma fonction qui parcourt ma Datagrid afin de créer et afficher mes textbox et combobox. Ensuite je peux enfin afficher comme je l'entends mes éléments. C'est vraiment bizarre que cela marche comme cela et pas comme avant.

Mon code est donc le suivant maintenant :
--------------------------------------------------------------------------------
Public Sub CreateTextBox(ByVal datagridV As DataGridView)

SysID.Visible = False
SubFamID.Visible = False
MayID.Visible = False
CttID.Visible = False
MatID.Visible = False
LanID.Visible = False
EqmID.Visible = False
FamID.Visible = False

Dim top, i As Integer
Dim numeroTextBox As Integer
Dim textBoxName, labelName As String

top = 100

numeroTextBox = 1

For i = 0 To datagridV.ColumnCount - 1
Dim controlFound As System.Windows.Forms.ComboBox = Nothing
controlFound = CType(Controls.Item(datagridV.Columns(datagridV.CurrentRow.Cells(i).ColumnIndex).HeaderText), ComboBox)

'Si un controle a été trouvé, on le fait apparaitre
If (controlFound IsNot Nothing) Then
controlFound.Visible = True
Else
'Création des textBox et labels
Dim tbox As New System.Windows.Forms.TextBox()
Dim label As New System.Windows.Forms.Label()

'Remplissage du label et du textbox
labelName = "Label" & numeroTextBox
textBoxName = "TextBox" & numeroTextBox
label.Name = labelName
tbox.Name = textBoxName
tbox.Text = datagridV.CurrentRow.Cells(i).Value.ToString
label.Text = datagridV.Columns(datagridV.CurrentRow.Cells(i).ColumnIndex).HeaderText

'Ajout des controles à la forme
Controls.Add(label)
Controls.Add(tbox)

'Paramètrage de la position des éléments (textbox et label)
With label
.Visible = True
.Top = top + 2 'distance entre le bord de la fenetre et le bord du conteneur
.Left = 5 'distance entre le bord gauche de la fenetre et le bord du conteneur
.Width = 120 'la largeur de l'objet
End With

With tbox
.Visible = True
.Top = top 'distance entre le bord de la fenetre et le bord du conteneur
.Left = 160 'distance entre le bord gauche de la fenetre et le bord du conteneur
.Width = 130 'largeur de l'objet
.Height = 275 'hauteur de l'objet
End With

top = top + 50
numeroTextBox = numeroTextBox + 1

End If

Next

End Sub
------------------------------------------------------------------------------

Voila je l'ai mis en entier si jamais cela peut aider quelqu'un. En tout cas, merci quand même pour votre aide, si quelqu'un sait pourquoi cela ne marchait pas avant, je suis curieux de connaitre l'explication.
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
23 juil. 2008 à 10:37
chez moi ça fonctionne très bien

Private
Sub Form1_Click(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.ClickComboBox1.Visible =

True

End
Sub

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.LoadComboBox1.Visible =

False

End
Sub

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
3

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

Posez votre question
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 13:07
Oui c'est vraiment bizarre car là je viens de refaire le code sur une autre forme et là miracle : tout fonctionne ! On dira que c'était un bug passager de Visual Studio ! Merci pour votre aide !
3
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
29 juil. 2008 à 10:26
Mon problème est résolu malgrès que je ne comprenne toujours pas certains bugs. Bref merci de votre aide.
3
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
22 juil. 2008 à 19:59
Merci, je vais tester cela demain matin car là j'ai pas le code sur moi. Bonne soirée et @+.
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 08:13
Bonjour,

J'ai essayé comme tu m'as dit gillardg mais cela ne marche toujours pas, ma combobox n'apparait toujours pas. Si tu as une autre solution, je suis preneur. Merci déjà pour l'aide que tu m'as apporté.

Ce que je ne comprends pas, c'est que lorsque j'execute en mode debug en pas à pas, controlFound.Visible = True ne passe jamais à True, il semble comme figé à False, de plus si j'essaye de le modifier grâce au débuggeur et bien là encore c'est un échec. Je ne comprends vraiment pas.
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 08:43
Mon contrôle est sur ma form, il n'y a rien d'autre, alors je ne penses pas qu'il soit caché par un autre élément, d'ailleurs si je les affiches du début et bien je n'ai aucun problème. Je viens de ressayer en les cachant avec la fonction Hide dans le formload puis en utilisant show pour les faire apparaitre mais rien n'y fait.
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 14:37
Décidément c'est pas ma journée... j'ai encore un bug bizarre avec l'une de mes combobox. J'ai donc plusieurs combobox qui apparaissent correctement, mon soucis maintenant et que je n'arrivent pas à sélectionner le texte sélectionné dans deux de mes combobox. Pourtant la première, j'arrive très bien à récupérer mais les deux autres, il me retourne rien !

Je ne comprends pas car j'utilise la fonction combobox.selectedText, et cela marche pour la première mais pas pour les autres. J'ai même essayer d'utiliser la fonction combobox.selectedValue. Je ne sais pas si c'est moi qui ne comprend rien ou si l'ordinateur qui en fait qu'à sa tête mais là je suis à court d'idées.. Donc si une âme charitable pourrait m'aider, j'en serais ravi. Merci d'avance !
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
23 juil. 2008 à 14:41
est ce que tu as un antivirus??

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 15:01
Oui, Norton Antivirus est installé sur mon post ! Je vais lancer un scan mais bon j'ai rien télécharger (ordinateur de travail..)
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
23 juil. 2008 à 15:13
oh ben parfois tu vas juste sur une page et hop tu chopes une grippe(pas toi ,ton pc)

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 15:26
Oui, ben que sa passera vite avec un bon Vaccin ;) !
0
oo7jb5 Messages postés 45 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mars 2010
23 juil. 2008 à 15:36
Mauvaise nouvelle ou bonne... tout dépend.. J'ai pas de virus ou plutôt aucun virus n'a été détecté ! Bon allez je vais continuer de plancher la dessus. Merci pour ton aide gillardg.
0
Rejoignez-nous