Подтвердить что ты не робот

Как показать контекстную команду при нажатии кнопки в правильном положении

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

Какие-либо предложения?

4b9b3361

Ответ 1

Я понял:

layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);

Ответ 2

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

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);
}

Ответ 3

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

Ответ 4

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

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

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);

Ответ 5

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

Ответ 6

У меня есть 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);
    }

Ответ 7

 contextMenuStrip1.Show(button1.PointToScreen(new Point(0, button1.Height)));

Показывать MenuStrip прямо под кнопкой

Ответ 8

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

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