Как переместить диалог Winform - PullRequest
6 голосов
/ 20 марта 2010

Моя основная форма запускает другую как модальное диалоговое окно, используя .ShowDialog. Я хочу расположить это, основываясь на положении мыши, но мои попытки вызвать SetDesktopLocation не имеют никакого эффекта. Это правильный метод?

Спасибо

Ответы [ 3 ]

6 голосов
/ 20 марта 2010

Чтобы программно установить положение формы перед ее отображением, необходимо установить для свойства StartPosition значение Manual, а затем для свойства Location указать желаемое местоположение.

using(Form toShow = new YourForm())
{
    toShow.StartPosition = FormStartPosition.Manual;
    toShow.Location = MousePosition;

    toShow.ShowDialog();
}
3 голосов
/ 20 марта 2010

Кроме того, не забывайте, что модальные диалоги останавливают выполнение в других формах до тех пор, пока они не будут закрыты - так что вам нужно делать позиционирование с самой формой диалога, а не на последующих строках в средстве открытия - так как они не будут вызываться до тех пор, пока диалог не закроется.

Кроме того, убедитесь, что для StartPosition формы задано значение Manual

2 голосов
/ 20 марта 2010

Вы можете попробовать это в методе onLoad () вашей новой формы:

this.Location = new Point(paramX, paramY);

, где paramX и paramY представляют положение мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...