Creer en Runtime une ListBox avec multi-sélection

Résolu
edt992 Messages postés 18 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 avril 2008 - 19 mars 2007 à 17:01
edt992 Messages postés 18 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 avril 2008 - 19 mars 2007 à 20:31
Bonjour,

Je souhaitre créer pendant l'exécution de mon programme une ListBox avec multi-sélection. Je mets donc dans une Form :

   Private Sub Form_Load()
       Dim L As ListBox
       Set L = Me.Controls.Add("vb.ListBox", "MyListObject")
       L.MultiSelect = 2
   End Sub

Mais j'ai l'erreur assez logique : Impossible d'affecter à une propriété en lecture seule...

Du coup, à quel moment puis-je indiquer que ma liste est en mode sélection multiple ?

En fait, mon problème est dans un UserControl, mais c'est plus simple de le mettre en évidence dans une Form.

Merci d'avance !

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 mars 2007 à 18:53
Salut
(J'ai changé la rubrique et effacé ta question qui se retrouvait en double)

Pour ta question : Ce n'est pas toujours possible :
Si certaines propriétés sont en lecture seule, c'est qu'il n'est pas prévu de les modifier en run-time (La Palice 1470-1525)
Il existe parfois certaines possibilités avec les APIs comme SendMessage d'y accéder, mais ce n'est pas un cas général et pas pour tous les contrôles.
La difficulté supplémentaire est que, quand tu utilises un User Control dans une application, le composant est déjà "vivant" même en mode création. Il devient donc impossible d'utiliser une ListBox dans un UserControl et de vouloir modifier certaines de ses propriétés au travers de propriétés maison, même en mode création de ton application.
Dans ton cas, c'est la même chose.
Hélas, je ne connais pas de solution ...

Ce que tu peux faire, c'est créer une ListBox avec la propriété MultiSelect et un Index 0, puis, quand tu as besoin d'en générer une, faire un
Load maListBox(1)
Ca te recopiera la ListBox d'origine dans une nouvelle avec l'index 1

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 mars 2007 à 17:17
Bonjour,
Arf merci de bien respecter les catégories dans lesquelles vous postez ! C'est pas du VB.Net ce que tu nous donnes !

Voir http://www.vbfrance.com/codes/CREATION-DYNAMIQUE-OBJET-AVEC-GESTION-EVENEMENTS-VB6_40648.aspx

++
0
edt992 Messages postés 18 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 avril 2008
19 mars 2007 à 17:33
Effectivement, je me suis trompé de ligne en sélectionnant le forum, désolé !

Sinon, merci pour la réponse, mais je sais gérer les évenements de mes objets créés en runtime. Mon problème, c'est de modifier une propriété qui est modifiable uniquement à la création.

Enfin, je vais poster sur le bon forum cette fois, en précisant un peu mieux ma question
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
19 mars 2007 à 18:55
Pour info, les seles commandes acceptées par une ListBox avec SendMessage sont listées ici :
http://msdn2.microsoft.com/en-gb/library/ms674461.aspx
et il n'y a rien qui parle de MultiSelect
0

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

Posez votre question
edt992 Messages postés 18 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 avril 2008
19 mars 2007 à 20:31
Bonjour,

Tout d'abord, merci d'avoir transféré ma question.

Je ne savais pas qu'on pouvait cloner comme ça des objets indexé, c'est intéressant à savoir.

Dans mon cas, ça n'est malheureusement pas utile, parce que je n'ai besoin que d'une seule instance de ma liste. Je voulais la créer dynamiquement, parce que l'instance de mon usercontrol a rarement besoin de cette liste, et il y aura beaucoup d'instances simultanées de mon usercontrol, donc c'est un peu idiot de créer autant de liste qu'il y aura de usercontrol...

Enfin, si c'est la seule solution, il faudra bien que je m'y fasse !

En tout cas, merci pour ette réponse !
0
Rejoignez-nous