2009-08-26 7 views
10

Salut J'ai ajouté un menu contextuel sur l'étiquette (C#, winforms). mon menu contextuel ayant 3 éléments enfants et je veux afficher le texte de l'étiquette lorsque je clique sur l'un des éléments du menu contextuel.menu contextuel parent?

merci à l'avance

+0

où voulez-vous le texte et d'où? De l'étiquette ou sur l'étiquette? –

+0

Avez-vous envisagé d'utiliser une combo? Cela peut être plus intuitif pour que vos utilisateurs comprennent –

+0

Je veux afficher le texte de l'étiquette (l'étiquette n'est rien d'autre qu'un paret pour le menu contextuel) – Nagu

Répondre

18

Le contrôle ContextMenuStrip a une propriété SourceControl, qui ont une référence au contrôle qui l'a ouverte. Vous pouvez l'utiliser pour extraire le texte du contrôle:

private void MenuStripItem_Click(object sender, EventArgs e) 
{ 
    ToolStripItem item = (sender as ToolStripItem); 
    if (item != null) 
    { 
     ContextMenuStrip owner = item.Owner as ContextMenuStrip; 
     if (owner != null) 
     { 
      MessageBox.Show(owner.SourceControl.Text); 
     } 
    } 
} 

Si vous au lieu d'un ContextMenuStrip utilisez un ContextMenu, le code devrait ressembler à ceci:

private void menuItem1_Click(object sender, EventArgs e) 
{ 
    MenuItem item = (sender as MenuItem); 
    if (item != null) 
    { 
     ContextMenu owner = item.Parent as ContextMenu; 
     if (owner != null) 
     { 
      MessageBox.Show(owner.SourceControl.Text); 
     } 
    } 
} 
+0

Je veux afficher le texte de l'étiquette (étiquette n'est rien mais paret pour le menu contextuel) – Nagu

+0

hey ici nous obtenons MenuItem pas ToolStripItem – Nagu

+0

@Nagu: échantillon de code ajouté pour' ContextMenu '. –

0

Get Contexte Menu parent Nom Contrôle MessageBox.Show (contextMenuStrip1.SourceControl.Name.ToString());