gpt4 book ai didi

c# - 右键单击菜单项并显示选项

转载 作者:行者123 更新时间:2023-11-30 16:27:48 25 4
gpt4 key购买 nike

我有菜单服务器列表,我正在使用 C# 代码动态添加菜单项。它从文件中读取服务器列表并填充菜单项。我为每个服务器添加了右键单击选项。编辑和删除。

一切正常。问题是单击编辑/删除时如何读取实际服务器名称。

这是代码

       public MainWindow()
{
InitializeComponent();
LoadMenuItems();
}

//Currently static values, but reads from file. later
private void LoadMenuItems()
{
MenuItem item2 = new MenuItem();
item2.Header = "Server1";
AddContextMenu(item2);

MenuItem item3 = new MenuItem();
item3.Header = "Server2";
AddContextMenu(item3);

ActualMenu.Items.Add(item2);
ActualMenu.Items.Add(item3);
}

private void AddContextMenu(MenuItem item)
{
MenuItem item1 = new MenuItem();
item1.Header = "Edit";
item1.Click += item_Click;

MenuItem item2 = new MenuItem();
item2.Header = "Detlete";
item2.Click += item_Click;

ContextMenu menu = new ContextMenu();
menu.Items.Add(item1);
menu.Items.Add(item2);

item.ContextMenu = menu;
}

void item_Click(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
string header = item.Header.ToString();
}

最佳答案

为此使用 PlacementTarget

 private void AddContextMenu(MenuItem item)
{
MenuItem item1 = new MenuItem();
....
ContextMenu menu = new ContextMenu();
....
menu.PlacementTarget = item; /// 'Connects' context menu to source menu item.
item.ContextMenu = menu;
}

void item_Click(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
string header
= ((MenuItem)((ContextMenu)((MenuItem)sender).Parent).PlacementTarget).Header;
}

干杯。

关于c# - 右键单击菜单项并显示选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com