I want to click on a button and have it show a ContextMenuStrip
right below the button. It keeps showing up in the left hand side of the screen when i try PointToScreen
and top and left coordinates.
Any suggestions?
I know this is an old question but I think it may help other people. Following code will display the context menu just below the button being clicked and the button will look like a dropdown button.
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);
}
I figured it out:
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
ContexMenuName under button, aligned to the right side of button (expands to below button and to the left):
ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height));
Hope this will help sb :)
As far as I know the code you require was here:
// On the right of the button
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + this.Top);
At the bottom of the button
ContextMenuName.Show(ButtonName.Left + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
At the bottom right of the button
ContextMenuName.Show(ButtonName.Left + ButtonName.Width + this.Left, ButtonName.Top + ButtonName.Height + this.Top);
Make sure that when you're positioning the context menu that you pass it the correct screen coordinates. You'll need to use something like Control.PointToScreen, using the x, y, coordinates based on the position of the control in its parent.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With