Liste déroulante multi colonnes pour un combobox d'un datagridview utilisant un datagridview pour la liste.

Soyez le premier à donner votre avis sur cette source.

Vue 15 986 fois - Téléchargée 2 385 fois

Description

Un datagridview est utilisé plutôt que de sous-classer l'affichage, ce qui permet - d'avoir une liste de largeur différente de celle de la colonne;
- de personnaliser l'apparence de la liste en utilisant les propriétés du datagridview;
- de réutiliser la liste à d'autres endroits d'un formulaire ou sur plusieurs formulaires de l'application.
- de modifier la valeur par défaut lors de l'exécution.

Le demo utilise la liste des langues des cultures de Windows, mais on peut facilement adapter à des bases de données.

Le processus se fait en 4 étapes.
1- création de la table contenant les éléments de la liste déroulant.
2- création du datagridview qui servira à l'affichage de la table.
3- création de la classe gestionnaire de l'affichage de la liste.
4- création de la colonne du datagridview de la saisie des données utilisant le datagridview de la liste déroulante.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Bonjour,

La ComboBox multicolonnes m'intéresse beaucoup ! J'en avais déjà 1, mais la tienne est bien plus jolie.
J'espère que je ne vais juste pas trop galérer pour choper la combobox sachant qu'à l'intérieur d'une datagridview, ca ne m'intéresse pas :o

J'ai regardé juste vite fait, comme j'aime pas vraiment les goto (ca me rappelle la prog sur les 1ères calculatrices programmables), perso, je ne fais pas ainsi :

'Vérification si la sélection a vraiment changée
If mDataGridView.CurrentCell.Value Is Nothing Then GoTo Step2
If mDataGridView.CurrentCell.Value.Equals(mListGridView.Rows(e.RowIndex).Cells(mValueMember).Value) Then Exit Sub

Step2:

mais comme ceci :

If mDataGridView.CurrentCell.Value IsNot Nothing AndAlso mDataGridView.CurrentCell.Value.Equals(mListGridView.Rows(e.RowIndex).Cells(mValueMember).Value) Then Exit Sub

Merci en tout cas !
Stéphane
cs_erdna
Messages postés
22
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
27 août 2010
-
Je ne suis pas un puriste du non goto, parce qu'une source peut devenir plus difficile à suivre à cause du ce purisme, et parce que du point de vue de l'efficacité et de la rapidité, un goto se traduit en assembler par une instruction, alors que d'autres formulations produisent plus d'une instruction, dans le cas d'un appel à une procédure ou une fonction, il y a tout le travail à l'aller et le retour pour sauver et restaurer les registres. S'interdire les goto, c'est contribuer à ce que les ordinateurs deviennent plus puissants, mais que les programmeurs les rendent moins efficaces.

Tant qu'un goto ne cause pas de problème de compréhension et est plus efficace, je m'y autorise et ne prévois pas devenir un puriste du non goto.

Merci, pour tes remarques.
PWM63
Messages postés
127
Date d'inscription
lundi 11 octobre 2004
Statut
Membre
Dernière intervention
18 mai 2016
-
Oui, en effet, les goto en masse permettent d'accélérer l'exécution du programme.
Ceci dit, si on veut optimiser la vitesse, je ne suis pas sûr que les langages à base de VB soient les plus adaptés...
cs_erdna
Messages postés
22
Date d'inscription
lundi 19 juin 2006
Statut
Membre
Dernière intervention
27 août 2010
-
Tu as bien raison, mais on fait ce qu'on peut.

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.