Местоположение ContextMenuStrip не подходит из-за PointToScreen

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

изображение

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

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

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
    }

person Vali Maties    schedule 02.10.2019    source источник


Ответы (1)


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

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

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

person LarsTech    schedule 02.10.2019