gpt4 book ai didi

c# - 从 ToolStripMenuItem 打开 ContextMenu

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:45 25 4
gpt4 key购买 nike

例如,我正在尝试模仿 Windows 资源管理器的行为以及收藏夹项目如何启动上下文菜单。

我目前正在使用:

contextMenu.Show((sender as ToolStripMenuItem).GetCurrentParent().PointToScreen(e.Location));

这发生在 ToolStripMenuItem 的 MouseDown 事件中。问题是右键单击后菜单立即关闭,我不知道有什么方法可以在上下文菜单打开时暂停它。

我尝试从 ToolStripMenuItem 派生并覆盖 MouseDown/MouseUp,但我不知道如何在单击时保持打开状态。

有什么好的方法吗?

最佳答案

这是我的幸运,它更直接一点:

    public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
void MenuItemContext(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) return;

ToolStripMenuItem mID = (ToolStripMenuItem)sender;

ContextMenu tsmiContext = new ContextMenu();

MenuItem Item1 = new MenuItem();
MenuItem Item2 = new MenuItem();

Item1.Text = "Item1";
Item2.Text = "Item2";

tsmiContext.MenuItems.Add(Item1);
tsmiContext.MenuItems.Add(Item2);

Item1.Click += new EventHandler(Item1_Click);
Item2.Click += new EventHandler(Item2_Click);

hndPass = mID.Text;

tsmiContext.Show(menuStrip1, menuStrip1.PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y)));
}

private String hndPass;

void Item1_Click(object sender, EventArgs e)
{
MenuItem mID = (MenuItem)sender;
MessageBox.Show("You clicked " + mID.Text + " in the context menu of " + hndPass);
}
void Item2_Click(object sender, EventArgs e)
{
MenuItem mID = (MenuItem)sender;
MessageBox.Show("You clicked " + mID.Text + " in the context menu of " + hndPass); ;
}
}

关于c# - 从 ToolStripMenuItem 打开 ContextMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235279/

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