Как обрабатывать размер элементов управления в приложении WinForm для разного размера шрифта / локализованного текста?

Я столкнулся с одной и той же проблемой, пытаясь поддержать любое из следующих действий в приложении WinForm:

  1. Опция, которая позволяет пользователям изменять шрифт и размер шрифта во всех элементах управления заметками / метками / кнопками / редакторами / комбинациями / сетками / ... и т. Д.
  2. Локализация, при которой длина / размер текста изменяется на разных языках (и потребуется больший размер шрифта)
  3. Параметры «Цвет и внешний вид Windows», которые позволяют изменять шрифт и размер шрифта.

Проблема в том, что размер / расположение / макет элементов управления будут испорчены из-за изменения размера. Либо элемент управления не может отображать все свое содержимое, либо элемент управления с автоматическим изменением размера будет перекрывать другие элементы управления, либо будет обрезан границей родительского элемента управления, либо возникнут проблемы с переносом слов, или ... и т. Д.

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

Заранее спасибо.


person user1249190    schedule 24.09.2013    source источник
comment
winforms не зависит от разрешения и не поддерживает тематику. Вот почему WPF был создан на его замену. Я настоятельно рекомендую вам использовать актуальные актуальные технологии пользовательского интерфейса .Net Windows, если вам нужна какая-либо из этих функций.   -  person Federico Berasategui    schedule 25.09.2013


Ответы (2)


Я бы предложил разместить элементы управления в контейнерах, предназначенных для этой цели ... например, TableLayoutPanel. Возможно даже вложенные панели, если ваш макет сложный. При этом вы можете разрешить большинству вещей AutoSize и управлять позициями на основе процентов от общей ширины / высоты.

person DonBoitnott    schedule 24.09.2013

Насколько я понял, вы хотите изменить размер шрифта для всех элементов управления и опасаетесь, что эти изменения испортят ваш макет.

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

person george.zakaryan    schedule 24.09.2013