Migration menus indexés VB6 en VB.Net

Thomas13012 35 Messages postés samedi 12 septembre 2015Date d'inscription 8 octobre 2016 Dernière intervention - 25 sept. 2015 à 17:31 - Dernière réponse : Thomas13012 35 Messages postés samedi 12 septembre 2015Date d'inscription 8 octobre 2016 Dernière intervention
- 27 sept. 2015 à 12:41
Bonjour,

Je reviens pour un problème de menu similaire à celui que j'avais déjà posé.
Pouvez-vous me donner un équivalent VB.Net simple du code suivant VB6 ?
La propriété Index ayant disparu sous VB.Net 2013.


'Le menu "mnuItems" est créer avec le créateur de menus sous VB6,
'en disposant de la propriété Index = 0.
mnuItems(0).Caption = "Item 0"
Dim i As Integer, NbItems A Integer
NbItems = 5
For i = 1 to NbItems - 1
'Chargement de nouveaux items du menu.
Load mnuItems(i)
mnuItems(i).Caption = "Item" & Str$(i)
mnuItems(i).Checked = True
Next i
Afficher la suite 

5 réponses

Thomas13012 35 Messages postés samedi 12 septembre 2015Date d'inscription 8 octobre 2016 Dernière intervention - 25 sept. 2015 à 17:32
0
Merci
Merci d'avance.

Thomas
cs_Le Pivert 5440 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 25 sept. 2015 à 18:22
0
Merci
Bonjour,

Je crois t'avoir répondu.

Cela ne correspondait pas à ta demande?

http://codes-sources.commentcamarche.net/forum/affich-10054261-menustrip-et-item-indexe#p10054277
Thomas13012 35 Messages postés samedi 12 septembre 2015Date d'inscription 8 octobre 2016 Dernière intervention - 25 sept. 2015 à 18:28
0
Merci
Non pas vraiment.
Notamment, quand je cherche à obtenir un code unique pour un menu indexé qui peut régir suivant la valeur de l'index. Notamment dans l'événement "mnuItems_Click(Index As Integer)".
Je cherchais une approche comparable à celle de l'exemple VB6
que j'ai soumis plus haut.

Merci pour votre réactivité.
Whismeril 12099 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 15 octobre 2018 Dernière intervention - 26 sept. 2015 à 07:36
0
Merci
Bonjour quand tu ajoutes un événement à un contrôle, dans la signature de la méthode il y a un objet sender.
Cet objet est le contrôle qui génère l'événement.

Pour t'en servir efficacement, tu dois le caster dans le type de contrôle qu'il est réellement.

A partir de là tu as accès à toutes les infos du menu cliqué.
En pratique, l'index ne sert plus dans la grande majorité des cas.
Et dans les quelques cas ou tu ne sais pas faire autrement, tu peux te servir de la propriété Name ou Tag (objet dans lequel tu peux mettre n'importe quel info) ou encore rechercher l'index du contrôle dans la collection de contrôles qui l'englobe.

		Private Sub testMenuToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim monMenu As ToolStripMenuItem = CType(sender, ToolStripMenuItem)

			monMenu.Checked = True 'là j'agis directement sur la propriété
			monMenu.Text = "Menu " & monMenu.Tag.ToString() ' là je prends l'info dans le tag

			Dim index As Integer = fichierToolStripMenuItem.DropDownItems.IndexOf(monMenu) ' et là j'obtiens l'index de mon menu dans la collection qui l'englobe
		End Sub


Je truc c'est qu'il ne faut pas appliquer la même logique qu'en VB6, il faut penser objet.
Thomas13012 35 Messages postés samedi 12 septembre 2015Date d'inscription 8 octobre 2016 Dernière intervention - 27 sept. 2015 à 12:41
Merci pour votre réponse.
Je vais m'engager dans cette direction.
Jusqu'à présent, je négligeais la partie objet de l'interface en me focalisant sur l'algorithmique des intentions du code associé à l'interface.

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.