как показать contextmenustrip, когда кнопка нажата в правильном положении - PullRequest
13 голосов
/ 11 октября 2009

Я хочу нажать на кнопку, чтобы она отображала контекстное меню прямо под кнопкой. он продолжает отображаться в левой части экрана, когда я пытаюсь указать pointtoacreen и верхнюю и левую координаты.

любые предложения

Ответы [ 7 ]

38 голосов
/ 29 ноября 2011

Я знаю, что это старый вопрос, но я думаю, что он может помочь другим людям. Следующий код отобразит контекстное меню чуть ниже нажимаемой кнопки, и кнопка будет выглядеть как выпадающая кнопка.

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);
}
22 голосов
/ 11 октября 2009

Я понял это:

layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);
5 голосов
/ 31 марта 2015

ContexMenuName под кнопкой, выровненный по правой стороне кнопки (разворачивается в нижнюю кнопку и влево): ContexMenuName.Show(ButtonName, new Point(ButtonName.Width - ContexMenuName.Width, ButtonName.Height)); Надеюсь, это поможет sb:)

3 голосов
/ 30 июля 2013

Насколько я знаю, код, который вам нужен, был здесь:

// Справа от кнопки

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);
1 голос
/ 31 марта 2014

У меня есть 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);
    }
1 голос
/ 11 октября 2009

Убедитесь, что при позиционировании контекстного меню вы передаете ему правильные координаты экрана. Вам нужно будет использовать что-то вроде Control.PointToScreen, используя координаты x, y, основанные на положении элемента управления в его родительском элементе.

0 голосов
/ 11 марта 2013

Простой способ

contextMenuStrip1.Show (Button1, Button1.PointToClient (Cursor.Position));

...