Bonjour à tous,
Ce que je souhaite faire :
Actuellement je créé plusieurs usercontrol en vb.net. Dans l'un d'eux j'ai des labels qui doivent être créer dynamiquement avec les un au dessus des autres, cela va servir à afficher des mesures. (tension, courant, température etc.)
Actuellement cela fonctionne en VB6, on migre enfin officiellement en .net
Le soft va créer donc dynamiquement ces labels, mais l'utilisateur peux masquer ou afficher ceux qu'il désire. Pour ce faire il ouvre un menu contextuel en cliquant sur l'un des labels. Ce menu affiche donc la liste des labels(les mesures) disponible avec des cases à cocher. Charge à l'utilisateur de cocher ou non ceux qu'il veux.
Ce que j'arrive à faire:
Avec l'aide de ressource Microsoft, j'ai trouvé des exemples pour créer dynamiquement un menu contextuel et dans l'exemple un bouton créer dynamiquement lui aussi( https://msdn.microsoft.com/fr-fr/lib...(v=vs.71).aspx Et surtout (https://msdn.microsoft.com/fr-fr/lib...v=vs.100).aspx)). Pour moi c'est pas un bouton mais cela ne changera pas grand chose au final et c'est dans un usercontrol au lieu d'un Windows form mais j'ai réussi à l'adapter et a l'appliquer uniquement sur le bouton, mais je n'arrive pas a avoir la possibilité de checker ou pas, malgré d'autre tuto trouvé.
Voici le code de mon usercontrol:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Imports System Imports System.Collections.Generic Imports System.Windows.Forms Imports System.Drawing Public Class essaie ' Declare the ContextMenuStrip control. Private fruitContextMenuStrip As ContextMenuStrip Public Sub New() ' Cet appel est requis par le concepteur. InitializeComponent() ' Ajoutez une initialisation quelconque après l'appel InitializeComponent(). ' Create a new ContextMenuStrip control. fruitContextMenuStrip = New ContextMenuStrip() ' Attach an event handler for the ' ContextMenuStrip control's Opening event. AddHandler fruitContextMenuStrip.Opening, AddressOf cms_Opening ' Assign the ContextMenuStrip to the form's ' ContextMenuStrip property. Me.ContextMenuStrip = fruitContextMenuStrip 'Add a button to the form and assign its ContextMenuStrip. Dim b As New Button() b.Location = New System.Drawing.Point(60, 60) Me.Controls.Add(b) b.ContextMenuStrip = fruitContextMenuStrip End Sub ' This event handler is invoked when the ContextMenuStrip ' control's Opening event is raised. It demonstrates ' dynamic item addition and dynamic SourceControl ' determination with reuse. Sub cms_Opening(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) ' Clear the ContextMenuStrip control's ' Items collection. fruitContextMenuStrip.Items.Clear() fruitContextMenuStrip.Items.Add("Apples") fruitContextMenuStrip.Items.Add("Oranges") fruitContextMenuStrip.Items.Add("Pears") ' Set Cancel to false. ' It is optimized to true based on empty entry. e.Cancel = False End Sub
Merci de votre aide.
Je précise que ce menu contextuel doit aussi s'afficher dans tous le usercontrol en plus des labels, si l'utilisateur enlève tous les labels il faut qu'il puisse les réactiver. Mais sa j'ai réussi à garder ce menu suivant le tuto Microsoft.
Partager