Как я могу изменить размеры элементов управления в зависимости от разрешения? - PullRequest
3 голосов
/ 15 декабря 2011

Внутри приложения WinForms, каков наилучший способ обработки элементов управления изменением размера в соответствии с разрешением экрана и увеличением и изменением размера окна.У меня есть 3 столбца, которые установлены так.ЭТИКЕТКА ДЛЯ ЛЕЙБЛОВ в каждой колонке.Вы можете считать это как 6 столбцов.Я попытался привязать вправо, но проблема в том, что текстовое поле в столбце 1 будет перекрывать следующие 2 столбца.Я также попробовал стыковку, но это, похоже, не сработало.Есть ли простой способ сделать это?

Ответы [ 3 ]

3 голосов
/ 15 декабря 2011

TL; DR : Вы не можете без ручного кодирования логики изменения размера.В качестве примечания, вы, вероятно, не должны пытаться сделать это.

В традиционных WinForms нет автоматического способа получения моих знаний без развертывания собственного решения. Sean87 предложил свойство AutoScaleMode, но, хотя оно и является автоматическим, оно не поддерживает автоматическое изменение размера по разрешению.Это дает возможность масштабирования на основе настроек размера шрифта в Windows или настройки DPI.Ни один из них не изменяется напрямую при простом изменении разрешения экрана, и, честно говоря, наиболее типичные пользователи (и даже, вероятно, опытные пользователи), вероятно, никогда не изменяют настройки DPI или размера шрифта.

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

Как правило, вы должны кодировать свое приложение так, чтобыизменяйте его содержимое разумно и полезно, если размер окна изменяется, но обычно вы полагаетесь на пользователя, который управляет этим, так как это его машина и их предпочтения (воспринимайте это как принцип «мой дом, мои правила»).По этой же причине большинство (все?) Приложений не меняют положения окон, за исключением случаев, когда пользователь непосредственно манипулирует ими (путем перетаскивания оконной рамы и т. П.).Фактически, все это, вероятно, объясняет, почему Microsoft выбрала , а не , чтобы включить любое автоматическое правило определения размера на основе разрешения.

1 голос
/ 15 декабря 2011

Вы не определяете, что вы подразумеваете под "столбцом".Как правило, вы должны использовать TableLayoutPanel и внутри каждой «ячейки» установить привязки элементов управления.

0 голосов
/ 15 декабря 2011

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

...