2010-03-20 3 views
6

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

Благодаря

ответ

6

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

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

    toShow.ShowDialog(); 
} 
+1

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

+0

@ Джон: Извините, написал ответ в спешке. «Местоположение» - это правильное свойство. –

2

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

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

где paramX и paramY представляют мышь-позицию.

3

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

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

Смежные вопросы