Как сделать так, чтобы текст в элементе управления кнопки не разбивал слово на несколько строк в Winforms? - PullRequest
0 голосов
/ 13 января 2019

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

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

Я не хочу пытаться поместить текст в одну строку, я просто хочу, чтобы текст не разбивался на слова.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

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

// Get some info from the button control
var graphics = button1.CreateGraphics();
var font = button1.Font;
var textWidth = graphics.MeasureString(button1.Text, font).Width;

// Not sure what the magic formula is to determine when the word wraps
if (textWidth > button1.Width - 25)
{
    // Assign a new font based on the old one, but smaller
    button1.Font = new Font(font.FontFamily, font.Size - 1,
        font.Style, GraphicsUnit.Pixel);
}
0 голосов
/ 13 января 2019

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

  1. Использовать сокращенный текст. например Первые слова (символы) / инициалы текста. Как правило, список контактов на мобильных телефонах Android, Skype или любом другом коммуникаторе показывает инициалы, если аватар не установлен.

  2. Показывать некоторую часть текста на кнопке, а при наведении курсора мыши отображать полный текст, изменяя размер кнопки или подсказки.

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

  4. Если текст фиксированный / статический, то вместо кнопки введите несколько значков вместо текста и отобразите полный текст в виде всплывающей подсказки.

~ Nilesh

...