2015-04-30 3 views
0

У меня есть основная форма (родительская форма приложения), которая устанавливается в обратную сторону с помощью p/Invoke SetWindowPos. SetWindowPos запрашивает координаты X, Y окна, которые должны быть в Координаты клиента.C# Как разместить родительскую форму с использованием клиентских координат?

Когда я запускаю программу, окно отображает центр экрана. Затем я перемещаю окно и сохраняю новое местоположение до Properties.Settings.Default.frmMainLocation, которое привязано к свойству frmMain.Location.

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

Как бы я поставил SetWindowPos, чтобы найти окно на X, Y координаты, которые являются производными от Location.X, Location.Y координат форме в?

+0

Помните, что вы включили 'Properties.Settings.Default.Save()'? –

+1

Из любопытства, почему вы используете p/invoke для установки местоположения формы? –

+0

Я сохранил свойства yes @RonBeyer Я не ... Я использую P/Invoke SetWindowPos, чтобы установить его порядок Z. –

ответ

0

На самом деле это было немного беспорядок, заставляя его работать.

Когда приложение начинает вам нужно SetWindowPosSWP_NOMOVE без флага Тогда SetWindowPos с SWP_MOVE флага установлены Затем, когда вы хотите, чтобы изменить положение повторить процесс запуска приложения.

1

Если вы берете свои свойства и сохранять их в точку, вы можете установить расположение окна, как это:

Point pos = new Point 
    (
     Properties.Settings.Default.posX, 
     Properties.Settings.Default.posY 
    ); 

this.Location = pos; 

Я поставил это в Form_Load() метод моей формы для в Form.Load() случае с несколькими различными наборами простых коордов, и он изменил положение, которое форма отображалась при загрузке каждый раз. Это просто прыжок, пропустить и прыгать, чтобы он загрузил коорды с Properties.Settings.Default, как я показал в примере.

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