Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2020, 06:40   #1
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию Обрезка текста если не влазиет в Label

Здравствуйте.
Как сделать обрезку текста если не влазиет текст в label. Точнее я знаю как проверить что текст не влазиет:
TextRenderer.MeasureText
Но вот как сделать именно обрезку. С помощью Substring но я не знаю как конвентировать Width в длинну строки.
Alexandr_07 вне форума Ответить с цитированием
Старый 06.07.2020, 07:57   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

А по умолчанию он не обрезает чтоли?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.07.2020, 10:17   #3
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
А по умолчанию он не обрезает чтоли?
Он переносит. А так места для 2 строки нет он почемуто текст делает уровнем выше но мне в любом случае своя обрезка нужно с ... на конце если не влезает.
Alexandr_07 вне форума Ответить с цитированием
Старый 06.07.2020, 13:18   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
public class CustomLabel : Label
{
    public CustomLabel()
    {            
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), 0, 0);
    }
}
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.07.2020, 14:36   #5
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Код:
public class CustomLabel : Label
{
    public CustomLabel()
    {            
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), 0, 0);
    }
}
И зачем мне отрисовка. Яже сказал мне всеголишь строку обрезать надо а для этого мне нужно знать как получить количество символов влизаемых в размер лейбла.
Alexandr_07 вне форума Ответить с цитированием
Старый 06.07.2020, 14:39   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну ковыряйте тогда TextRenderer.MeasureText. Там есть нужные параметры обрезки
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.07.2020, 14:04   #7
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну ковыряйте тогда TextRenderer.MeasureText. Там есть нужные параметры обрезки
Он переводит Размер строки в размер текста по пикселям но мне на оборот нужно перевести размер текста в пикселях а точнее размер лейбла в размер строки. И это должно быть возможным. Надо просто знать как.
Alexandr_07 вне форума Ответить с цитированием
Старый 07.07.2020, 14:21   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ну тупо лоб решить никак чтоли??
Изображения
Тип файла: png Безымянный.png (30.4 Кб, 0 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.07.2020, 14:56   #9
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию

Ну так да. Не подумал о таком варианте. Конешно спасибо но я думал может есть встроенный функционал перевода размера в размер строки раз есть функционал перевода размера строки в размер пикселей
Alexandr_07 вне форума Ответить с цитированием
Старый 07.07.2020, 15:26   #10
Alexandr_07
Пользователь
 
Регистрация: 25.09.2019
Сообщений: 16
По умолчанию

Код:
private void textLabel(Label lbl, string text)
        {
            var add3 = false;
            while (text != "")
            {
                var sz = TextRenderer.MeasureText(text, lbl.Font);
                if (sz.Width <= lbl.Size.Width)
                {
                    if (add3)
                        lbl.Text = text.Substring(0, text.Length - 3) + "...";
                    break;
                }
                else
                {
                    add3 = true;
                    text = text.Substring(0, text.Length - 1);
                }
            }
            lbl.Text = text;
        }
Не работает. Точнее размер текста почемуто определяется неправильно.
Alexandr_07 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поменять цвет текста в CSS если они связаны одним label zeni1agent HTML и CSS 2 23.05.2018 07:23
Обрезка текста в ячейке таблицы Владимир1989 JavaScript, Ajax 5 28.01.2016 20:21
Обрезка лишнего текста, есть проблема nikolokaputik80 JavaScript, Ajax 5 10.11.2015 08:32
Qt изменение текста label'ов Thez Qt и кроссплатформенное программирование С/С++ 9 05.01.2015 22:59
Движение текста по Label'у Vladya Помощь студентам 9 02.04.2009 20:58