Migration menus indexés VB6 en VB.Net

Thomas13012 Messages postés 35 Date d'inscription samedi 12 septembre 2015 Statut Membre Dernière intervention 8 octobre 2016 - 25 sept. 2015 à 17:31
Thomas13012 Messages postés 35 Date d'inscription samedi 12 septembre 2015 Statut Membre Dernière intervention 8 octobre 2016 - 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

4 réponses

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

Thomas
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
25 sept. 2015 à 18:22
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
0
Thomas13012 Messages postés 35 Date d'inscription samedi 12 septembre 2015 Statut Membre Dernière intervention 8 octobre 2016 1
25 sept. 2015 à 18:28
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é.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
26 sept. 2015 à 07:36
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.
0
Thomas13012 Messages postés 35 Date d'inscription samedi 12 septembre 2015 Statut Membre Dernière intervention 8 octobre 2016 1
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.
0
Rejoignez-nous