Как установить положение окна на другом мониторе из главного окнаC#

Место общения программистов C#
Ответить
Anonymous
 Как установить положение окна на другом мониторе из главного окна

Сообщение Anonymous »

Не проблема установить положение нового WinForm внутри монитора, на котором отображается главное окно. Например:

Код: Выделить всё

Form1 form = new Form1();
form.Show();
form.StartPosition = FormStartPosition.Manual;
form.Location = new System.Drawing.Point(100,100);
Но form.Location = new System.Drawing.Point(-500,100); не работает. Эта рабочая область существует, но форма всегда отображается обратно в главное окно. Как правильно контролировать положение формы в .Net.
Мне кажется, что метод Show() является асинхронным и всегда перезаписывает новое положение моего окна, когда это окно находится за пределами «основного» монитора.
редактировать:
У меня три монитора. Основной монитор находится в центре. Главное окно моего приложения находится на центральном мониторе. Центральный и правый мониторы имеют одинаковое разрешение и масштаб. Оба они имеют разрешение 2560x1440 и расположены горизонтально.
.Net framework 4.8
Form1 является формой по умолчанию и не содержит дополнительного кода.

Код: Выделить всё

There is SystemInformation.VirtualScreen info:
Left top (X, Y): (-1920, 0)
width: 7040 px
height: 1440 px
Rigth button (Right, Bottom): (5120, 1440)
Form1 имеет размер 100x100.
Мой код для позиции form1

Код: Выделить всё

Form1 form = new Form1();
form.StartPosition = FormStartPosition.Manual;
form.Show();
form.Location = new System.Drawing.Point(2500, 500);
Я изменяю значение 2500 (левая позиция) в новом System.Drawing.Point(). Если форма1 находится на главном мониторе, все работает так, как я ожидаю. Все работает нормально, пока форма1 в основном находится на основном мониторе (хотя часть формы1 видна на дополнительном мониторе). Однако, как только оно полностью переходит на правый монитор, я вижу (после события «Показать»), что окно лишь ненадолго мигает в правильном месте, а затем появляется в центре основного/главного экрана.
Но метод ShowDialog() хорошо работает во всем диапазоне виртуальной области.
Как разместить окно в любом месте с помощью метода Show()?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ain-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»