J'ai un formulaire. Ce formulaire a un contrôle utilisateur. Ce contrôle utilisateur a un panneau et un menu contextuel. Le menu contextuel n'est pas attaché au panneau. D'autres contrôles sont créés dynamiquement et ajoutés à ce panneau. L'un de ces contrôles est un bouton. Lorsque vous cliquez sur ce bouton, je définis la propriété contextmenustrip sur mon menu contextuel.Impossible de trouver le menu contextuel dans la collection de contrôle
Mon problème est que j'ai besoin de lire les éléments dans ce menu contextuel avant d'avoir la possibilité d'attacher le menu contextuel au bouton.
Chaque fois qu'un formulaire est chargé, j'itéère tous les contrôles enfants du formulaire. Si un contrôle a des enfants, je les passe en revue, et ainsi de suite ... Je n'arrive pas à trouver le menu contextuel qui n'est pas assigné pour ainsi dire. Il n'a été associé à aucun contrôle et ne semble donc pas être un contrôle enfant des contrôles du formulaire. MyConectMenu n'est jamais ajouté à la configuration de l'utilisateur comme ceci.Controls.Add (myConectMenu)
Comment ce menu contextuel ne peut-il pas être imbriqué dans la collection de contrôles de formulaires? Comment puis-je accéder à ce menu contextuel?
Voici le code de créateur:
private System.Windows.Forms.ContextMenuStrip myContextMenu;
void InitializeComponent()
{
this.myContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.myContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.myToolStripMenuItem1,
this.myToolStripMenuItem2});
this.myContextMenu.Name = "myContextMenu";
this.myContextMenu.Size = new System.Drawing.Size(158, 92);
}
Mise à jour L'itération de contrôle se produit dans une classe de base à partir de laquelle toutes les formes dans mon application dérivent.
Il existe un objet de composants privés auquel myContextMenu est ajouté. J'imagine que c'est là pour que vous puissiez voir le menu contextuel en mode Création quand il n'est pas attaché à un contrôle. Peut-être que je pourrais tirer parti de cela?
private System.ComponentModel.IContainer components = null;
this.myContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
Pouvez-vous expliquer ce que vous voulez faire avec ContextMenuStrip? –
parcourir les contrôles enfants et désactiver les éléments auxquels un utilisateur n'a pas accès. –