2009-08-26 5 views
10

Hallo Ich habe ein Kontextmenü auf dem Etikett (C#, winforms) hinzugefügt. Mein Kontextmenü mit 3 untergeordneten Elementen und ich möchte Etikettentext anzeigen, wenn ich auf eines der Kontextmenüelemente klicke.Kontextmenü Eltern?

Dank im Voraus

+0

Wo soll der Text und wo von? Vom Etikett oder auf dem Etikett? –

+0

Haben Sie überlegt, ein Kombinationsfeld zu verwenden? Das könnte für Ihre Benutzer intuitiver sein. –

+0

Ich möchte den Beschriftungstext anzeigen (Beschriftung ist nichts anderes als für das Kontextmenü) – Nagu

Antwort

18

Das ContextMenuStrip Steuerelement verfügt über eine SourceControl Eigenschaft, die einen Verweis auf die Steuerung hat, die sie geöffnet. Damit kann man den Text von der Steuerung zu extrahieren:

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); 
     } 
    } 
} 

Wenn Sie statt eines ContextMenuStrip eine ContextMenu verwenden, sollte der Code wie folgt aussehen:

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

Ich möchte den Etikettentext anzeigen (Label ist nichts anderes als Paret für Kontextmenü) – Nagu

+0

hey hier erhalten wir MenuItem nicht ToolStripItem – Nagu

+0

@Nagu: Code-Beispiel für ContextMenu hinzugefügt '. –

0

Get Kontextmenü Eltern Control Name MessageBox.Show (contextMenuStrip1.SourceControl.Name.ToString());