Как отобразить модальную форму в позиции относительно элемента управления в родительском окне (открыватель) - PullRequest
5 голосов
/ 22 августа 2010

Хорошо, у меня есть форма, которую я открываю, используя:

ShowDialog(this);

Я пытаюсь изменить положение формы, используя ее свойство Location, но я не понимаю, к чему именно относится эта позиция? Я хочу открыть эту форму ниже определенной кнопки. Так как это можно сделать?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 22 августа 2010

Форма будет ожидать координаты относительно верхнего левого угла экрана. Однако расположение элемента управления в пределах формы формы относительно верхнего левого угла формы .

Используйте свойство элемента управления Location, чтобы найти его местоположение, а затем вызовите PointToScreen объекта Form, чтобы превратить его в экранные координаты. Затем вы можете расположить новую форму относительно этого.

Например:

var locationInForm = myControl.Location;
var locationOnScreen = mainForm.PointToScreen(locationInForm);

using (var model = new ModelForm())
{
    model.Location = new Point(locationOnScreen.X, locationOnScreen.Y + myControl.Height + 3);
    model.ShowDialog();
}

На самом деле верхний левый угол клиентской области формы.

4 голосов
/ 20 июня 2013

Я предпочел это:

myModalForm.Location = New Point(myControl.PointToScreen(Point.Empty).X + myControl.Width, myControl.PointToScreen(Point.Empty).Y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...