wpfアプリケーションのコードビハインドで追加したいくつかのラベルコントロールのコンテキストメニュー内にComboBoxコントロールがあります。ページには、コンテキストメニューを持つ多くのラベルがあります。基本的に、このLABELにはContextMenuが含まれ、ContextMenuにはComboboxが含まれているようなものです。ComboboxのSelectionChangedイベントで、どのラベルのコンテキストメニューのComboboxがこのイベントを生成したか知りたいですか?
3191 次
1 に答える
3
ComboBoxはsender
、イベントハンドラーの引数から取得できます。
Parent
次に、ComboBoxのプロパティからContextMenuを取得できます。
そして最後PlacementTarget
に、ContextMenuのプロパティからのラベル。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var label = new Label();
label.Content = "Click me!";
label.Name = "clickMe";
this.Content = label;
var cmb = new ComboBox();
cmb.Name = "combobox1";
cmb.Items.Add("Test1");
cmb.Items.Add("Test2");
cmb.Items.Add("Test3");
cmb.SelectionChanged += new SelectionChangedEventHandler(cmb_SelectionChanged);
var menu = new ContextMenu();
menu.Name = "contextmenu";
menu.Items.Add(cmb);
label.ContextMenu = menu;
}
private void cmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var cmb = (ComboBox)sender;
var contextmenu = (ContextMenu)cmb.Parent;
var label = (Label)contextmenu.PlacementTarget;
MessageBox.Show("Combobox: " + cmb.Name + Environment.NewLine +
"Contextmenu: " + contextmenu.Name + Environment.NewLine +
"Label: " + label.Name);
}
}
于 2012-11-01T08:28:52.120 に答える