2009-08-26 8 views
10

こんにちは、ラベル(c#、winforms)にコンテキストメニューを追加しました。私のコンテキストメニューは3つの子アイテムを持ち、コンテキストメニュー項目のどれかをクリックするとラベルテキストを表示したい。事前コンテキストメニューの親ですか?

+0

どこからテキストが必要ですか?ラベルまたはラベルから? –

+0

コンボボックスの使用を検討しましたか?これは、ユーザーが分かりやすいようにすることができます –

+0

私はラベルのテキストを表示したい(ラベルはコンテキストメニューのパレットです) – Nagu

答えて

18

おかげでContextMenuStripコントロールはそれを開いたコントロールへの参照を持つことになりますSourceControl性質を持っています。あなたは、コントロールからテキストを抽出するためにそれを使用することができます

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

をあなたの代わりに、ContextMenuStripは、コードは次のようになります、ContextMenuを使用する場合:

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

ラベルのテキストを表示したい(コンテキストメニューのラベルは何もありません) – Nagu

+0

ちょっとここで私たちはMenuStemを取得していませんToolStripItem – Nagu

+0

@Nagu:' ContextMenu '。 –

0

は、コンテキストメニューの親コントロール名を取得します MessageBox.Show(contextMenuStrip1.SourceControl.Name.ToString());

関連する問題