我想点击一个按钮,让它在按钮下面显示一个上下文。当我尝试使用pointtoacreen和top和left坐标时,它会一直显示在屏幕的左侧。
任何建议
答案 0 :(得分:37)
我知道这是一个老问题,但我认为这可能有助于其他人。下面的代码将显示正在单击按钮下方的上下文菜单,该按钮看起来像一个下拉按钮。
private void Button1_Click(object sender, EventArgs e)
{
Button btnSender = (Button)sender;
Point ptLowerLeft = new Point(0, btnSender.Height);
ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);
ctMenuStrip.Show(ptLowerLeft);
}
答案 1 :(得分:21)
我明白了:
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
答案 2 :(得分:5)
按钮下的ContexMenuName,与按钮右侧对齐(展开到按钮下方和左侧):
ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height));
希望这会对某人有所帮助:)。
答案 3 :(得分:3)
据我所知,您需要的代码在这里:
//按钮右侧
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + this.Top);
按钮底部
ContextMenuName.Show(ButtonName.Left + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
按钮右下角
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
答案 4 :(得分:1)
确保在定位传递的上下文菜单时,使用正确的屏幕坐标。您需要使用类似Control.PointToScreen的东西,使用x,y,基于控件在其父级中的位置的坐标。
答案 5 :(得分:1)
我有toolstripDropDown,点击toolstripDropDown按钮后我想显示上下文菜单。 所以从上面的评论中我修改了toolStripDropDown_Openining事件中的代码,如下所示。 它工作正常。
void toolStripDropDownButton_DropDownOpening(object sender, EventArgs e)
{
ToolStripDropDownButton btnSender = (ToolStripDropDownButton)sender;
Point ptLowerRight = new Point(btnSender.Bounds.Right, btnSender.Bounds.Bottom);
ptLowerRight = PointToScreen(ptLowerRight);
contextMenuStrip.Show(ptLowerRight);
}
答案 6 :(得分:0)
contextMenuStrip1.Show(button1.PointToScreen(new Point(0, button1.Height)));
要在按钮正下方显示MenuStrip
答案 7 :(得分:0)
似乎已经有了正确的答案,但我认为这可能更漂亮:
private void button_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
menuStrip.Show(btn, new Point(0, 0)); // offset from the edge of your button
}
答案 8 :(得分:0)
以下解决方案适用于大多数控制
contextMenuStrip1.Show(sender,sender.Location)
答案 9 :(得分:-1)
简单方法
contextMenuStrip1.Show(Button1的, Button1.PointToClient(Cursor.Position));