Member 11000455 Ответов: 2

Как изменить размер формы в соответствии с размером экрана c#


У меня есть форма windows с размером скажем
ширина: 900
Высота: 640 см
поэтому, когда я загружаю форму в обычное окно, это нормально, но, например, скажем, я открываю ту же форму в окнах с меньшим размером, скажем, ширина:800 и высота:600, их моя форма превышает размер окна
поэтому я хочу соответствовать размеру моей формы соответственно,


я тоже пробовал этот код

этот.StartPosition = FormStartPosition.Инструкция;
этот.Location = новая точка(0, 0);
Размер formSize = новый размер(экран.GetWorkingArea(это).Ширина, Экран.GetWorkingArea(это).Высота);
этот.Размер = новый размер(formSize.Ширина, размер формы.Высота);

CHill60

Что было не так со вторым набором кода? И вы просто хотите, чтобы форма была максимально увеличена? (в этом случае см. http://msdn.microsoft.com/en-us/library/system.windows.forms.form.windowstate.aspx[^])

Member 11000455

На самом деле второй набор кода работает идеально в соответствии с кодом, это не имеет значения, насколько велик маленький размер ur экрана, он подходит соответственно, но проблема в том, что для меньших осыпей это нормально, но то, что я разрабатываю сейчас со стандартным размером окна моей формы, как написано выше 900: 600
но если я добавлю код сверху, он подходит в соответствии с размером экрана, так что для smalle screen это нормально, он не превышает больше размера экрана, но с кодом он также изменяет мой текущий стандартный размер с 900: 640 на размер текущего экрана, который я не хочу.

2 Ответов

Рейтинг:
1

BillWoodruff

OriginalGriff wrote: "Winforms applications don't scale automatically: so changing the size of the window doesn't alter the size of the controls or the text on them" 
Я должен сделать исключение из этого: если вы тщательно проектируете свою форму Windows, используя панели и другие элементы управления контейнерами, для всех элементов управления формами верхнего уровня и тщательно устанавливаете свойства управления, такие как "Док", "якорь", "поле", "заполнение", "Авторазмер", "Автозимод"...

Вы можете получить неплохой визуальное изменение размера при изменении размера формы; конечно, как указывает OriginalGriff, FontSize не будет масштабироваться автоматически, и если вы сами взяли на себя повторное масштабирование FontSize, скорее всего, вы не получите хороших результатов при любом заданном произвольном размере масштаба, потому что оптический намек, используемый в шрифтах небольших размеров, "гарантирует", что они выглядят лучше всего только при определенных размерах. раздельный размеры. Растровые изображения-это еще один случай, когда произвольное изменение размера может привести к ужасным визуальным эффектам.

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

Если вы действительно хотите динамического изменения размера, вам лучше использовать WPF.

Если вы собираетесь продолжить эту работу, вам нужно изучить класс Screen в WinForms и ознакомиться с его объектами, такими как e'Primaryscreen, а также с такими свойствами управления, как DisplayRectangle и ClientRectangle.


Рейтинг:
0

OriginalGriff

Не.
Либо дизайн для меньшего размера, либо пусть пользователь мирится с полосами прокрутки.
Приложения Winforms не масштабируются автоматически: поэтому изменение размера окна не изменяет размер элементов управления или текста на них, и хотя относительно легко изменить размер элементов управления автоматически с помощью свойств Dock и Anchor, это влияет только на общий размер элемента управления - он не влияет на текст на кнопках или высоту элементов управления, которые они содержат. Таким образом, вы получаете кнопки, слишком маленькие, чтобы иметь легенду, или со словом "отмена" крошечными буквами посередине.

Есть проекты, где это может работать - VS один - но они должны быть разработаны для этого с нуля - и есть "минимальный размер", при котором даже они будут работать!