C # Способы обработки динамического размера шрифта - PullRequest
3 голосов
/ 30 августа 2011

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

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Перед InitializeComponent(); в конструкторе каждой формы просто введите this.Font = new Font( ... ); по своему желанию.Тем не менее, он будет проходить только через элементы управления, если вы оставите каждый элемент управления по умолчанию.Вы всегда можете поставить цикл после инициализации:

foreach(Control c in this.Controls)
{
    if(c is Label) //if you want to change Labels only
        c.Font = new Font( ... );
}

Если это заставляет вещи выглядеть странно, измените ваши AutoScaleMode и связанные свойства.

Чтобы решить вопрос о том, как обрабатывать переностекст метки, используйте Label1.AutoSize = true и просто установите Label1.MaximumSize = new Size(x, 0);, где x - ваша максимальная ширина.

Тем не менее, если вы собираетесь часто динамически масштабировать вещи, вам действительно стоит посмотреть наиспользуя WPF вместо WinForms.У него больше возможностей автоматически обрабатывать такие типы задач.

0 голосов
/ 22 сентября 2011

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

    Properties.Settings.Default.FontSize = 3;
    Properties.Settings.Default.Save();

Тогда, как сказано выше, используйте цикл foreach.

    foreach(Control c in this.Controls)
    {
     c.Font = new Font( .. );
    // if(c is Panel)
    //   {
    //     foreach(Control d in c.Controls)
    //     {
    //     d.Font = new Font( .. );
    //     }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...