Расположение ContextMenuStrip не подходит из-за PointToScreen - PullRequest
1 голос
/ 03 октября 2019

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

image

Но то, что я получил, не так.

Вот что я пробовал:

private void SelectContentGroup_Click(object sender, EventArgs e) {
    ContextMenuStrip x = selectContentGroup.ContextMenuStrip;
    if (x is null) return;
        // this will show contextmenu near the mouse arrow
        //x.Show(Control.MousePosition);

        // I have tried to get MousePosition and to compare to my button location and Y is a lot of difference, about 200 pixels
        //Console.WriteLine("MousePosition: {0}, ButtonLocation: {1}", Control.MousePosition, PointToScreen(selectContentGroup.Location));
        x.Show(PointToScreen(selectContentGroup.Location));

        // I tried with e.Location also, but none of those points will give the button Left-Bottom position for contextmenu
    }

1 Ответ

1 голос
/ 03 октября 2019

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

x.Show(SelectContentGroup, new Point(0, SelectContentGroup.Height));

Я предполагаю, что SelectContentGroup - это имя кнопки.

...