Winforms 如何在winform中将上下文菜单指定给toolstrip菜单项?
我有一个带有ToolStripDropDownButton的ToolStrip,我在代码的运行时向其添加ToolStripMenuItems。我需要有一个默认的ContextMenuStrip,并将其分配给每个菜单项,这样当用户右键单击菜单项时,他将获得上下文菜单条。 可能吗Winforms 如何在winform中将上下文菜单指定给toolstrip菜单项?,winforms,contextmenustrip,Winforms,Contextmenustrip,我有一个带有ToolStripDropDownButton的ToolStrip,我在代码的运行时向其添加ToolStripMenuItems。我需要有一个默认的ContextMenuStrip,并将其分配给每个菜单项,这样当用户右键单击菜单项时,他将获得上下文菜单条。 可能吗 非常感谢您的帮助。似乎我找到了一些有用的东西,这显然不是完美的,但应该给您一个不错的起点。我假设您有一个名为contextmenustrip1的ContextMenuStrip,其中一些下拉项是aaaToolStripMe
非常感谢您的帮助。似乎我找到了一些有用的东西,这显然不是完美的,但应该给您一个不错的起点。我假设您有一个名为contextmenustrip1的ContextMenuStrip,其中一些下拉项是aaaToolStripMenuItem。然后创建一个私有布尔字段
private static bool clickReleased=false;
在aaaTool…的MouseDown事件中,编写以下代码
if (e.Button == MouseButtons.Right)
clickReleased = true;
然后在MouseUp事件中,写下这个
if (e.Button == MouseButtons.Right)
{
if (clickReleased)
{
contextMenuStrip1.Show(Cursor.Position);
clickReleased = false;
}
}
希望这能有所帮助。我在以下方面找到了一个很好的解决方案: 为了节省阅读时间,我还在此处添加了解决方案:
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); ;
}
玩得开心(-)我看不到任何直接的方法。Toolstripmenu项与contextmenuitem非常相似。但我非常确定一定有一种方法可以使用Windows API。这是不合适的UI。任何用户都不会认为右键单击菜单项可以做任何事情。创建不可见的UI没有任何意义,只需添加一个子菜单即可。