Visual studio label перенос строки

Обновлено: 06.07.2024

Здравствуйте, Аноним, Вы писали:

А>Подскажите, пожалуйста, как можно реализовать автоматический перенос строк в лейбле\чекбоксе\радиобатоне, сохраняя вертикальное выравнивание текста по центру.

Тебе помогут TextWrapping и VerticalContentAlignment.
Пример для лейбла:


И помни, что если у тебя "лейбл\чекбокс\радиобатон" имеет Access Key (буква с подчеркиванием, которая фокусирует элемент), то нужно вместо TextBlock юзать AccessText.

Здравствуйте, MxKazan, Вы писали:

MK>Здравствуйте, Аноним, Вы писали:

А>>Подскажите, пожалуйста, как можно реализовать автоматический перенос строк в лейбле\чекбоксе\радиобатоне, сохраняя вертикальное выравнивание текста по центру.

MK>Тебе помогут TextWrapping и VerticalContentAlignment.
MK>Пример для лейбла:
MK>

MK>И помни, что если у тебя "лейбл\чекбокс\радиобатон" имеет Access Key (буква с подчеркиванием, которая фокусирует элемент), то нужно вместо TextBlock юзать AccessText.

Спасибо огромное!
А можно как-нибудь добиться такого же поведения TextBlock из тимплейта? Я в тимплейте контент провайдер заменил TextBlock'ом и забайндил его текст на контент. Выставил VerticalContentAlignment="Center" для лейбла и установил TextWrapping для текстбокса. Но в этом случае вертикалбное выравнивание по центру не работает (

Здравствуйте, Аноним, Вы писали:

А>А можно как-нибудь добиться такого же поведения TextBlock из тимплейта? Я в тимплейте контент провайдер заменил TextBlock'ом и забайндил его текст на контент. Выставил VerticalContentAlignment="Center" для лейбла и установил TextWrapping для текстбокса. Но в этом случае вертикалбное выравнивание по центру не работает (

Могу предположить, что тебе нужно настроить выравнивание TextBlock'а (HorizontalAlignment и VerticalAlignment) аналогично убранному тобою ContentPresenter из стандартного шаблона. Приведи свой шаблон, если не секретный

Здравствуйте, MxKazan, Вы писали:

MK>Могу предположить, что тебе нужно настроить выравнивание TextBlock'а (HorizontalAlignment и VerticalAlignment) аналогично убранному тобою ContentPresenter из стандартного шаблона. Приведи свой шаблон, если не секретный


А вот сам лейбл:

Здравствуйте, Аноним, Вы писали:

Зачем же ты, мил человек, TextBlock растянул по вертикали? Видел как в оригинальном шаблоне ContentPresenter привязывается к свойствам label?

Вот и ты также сделай для TextBlock.

Ну а если настраиваемость не нужна, то просто замени

Здравствуйте, MxKazan, Вы писали:

MK>Зачем же ты, мил человек, TextBlock растянул по вертикали? Видел как в оригинальном шаблоне ContentPresenter привязывается к свойствам label?
MK>
MK>Вот и ты также сделай для TextBlock.

MK>Ну а если настраиваемость не нужна, то просто замени
MK>
MK>на
MK>

Спасибо, огромное! Все заработало. Я ставил VerticalAlignment="Stretch" потомучто по другому он у меня не растягивался почему-то при большом контенте, но сейчас все отлично!

Можно еще один вопросик?
Сейчас у меня лейбл лежит в гриде и полностью его заполняет, как можно сделать так, чтобы он, нарпимер при наведение, растягивался на величину своего контента?

Здравствуйте, Аноним, Вы писали:

А>Можно еще один вопросик?
А>Сейчас у меня лейбл лежит в гриде и полностью его заполняет, как можно сделать так, чтобы он, нарпимер при наведение, растягивался на величину своего контента?

Я не очень понял, что должно растянуться?
Нужно юзать Trigger на свойство IsMouseOver.
Или EventTrigger на MouseEnter и MouseLeave, если хочешь анимацию.

Здравствуйте, MxKazan, Вы писали:

MK>Я не очень понял, что должно растянуться?
MK>Нужно юзать Trigger на свойство IsMouseOver.
MK>Или EventTrigger на MouseEnter и MouseLeave, если хочешь анимацию.

Интересует немного другой момент. Есть лейбл, который находится в ячейке грида. В этом лейле находится текст, который не полностью отображается (обрезается). Как можно развернуть лейбл, так чтобы он показал свой текст полностью?
Как я понимаю, тут либо сам лейбл должен уметь развернуться полностью и его просто нужно временно поместить в другой контейнер, который находится в верхнем слое; либо вычислить размер необходимый для полного отображения текста, поместить лейбл в другой контейнер и заресайзить. Непонятно как правильно сделать это в wpf. Подскажите плз.

Как мы можем получить функциональность word wrap для метки в Windows Forms?

Я разместил метку на панели и добавил текст для динамической метки. Но она превышает длину панели. Как я могу это решить?

быстрый ответ: переключатель выкл AutoSize.

большая проблема здесь в том, что метка не будет автоматически изменять свою высоту (только ширину). Чтобы получить это право, вам нужно будет подкласс метки и включить логику вертикального изменения размера.

в основном, что вам нужно сделать в OnPaint:

  1. измерение высоты текста (графика.MeasureString).
  2. если высота ярлыка не равна высоте текст устанавливает высоту и возврат.
  3. рисовать текст.

Вам также нужно будет установить ResizeRedraw флаг стиля в конструкторе.

на самом деле, принятый ответ излишне сложен.

Если вы установите метку для автоматической настройки, она будет автоматически расти с любым текстом, который вы в нее поместите. (Это включает вертикальный рост.)

Если вы хотите сделать его переносом слов на определенную ширину, вы можете установить свойство MaximumSize.

проверено и работает.

в моем случае (метка на панели) я установил label.AutoSize = false и label.Dock = Fill . И текст ярлыка обернут автоматически.

вы можете выполнить это программно для динамического размера, но вот самое простое решение:

  • выберите Свойства метки
  • AutoSize = True

MaximumSize = (ширина, Высота), где ширина = максимальный размер вы хотите ярлык быть и Высота = сколько пикселей вы хотите, чтобы обернуть

Sample Properties

Мне нужно было найти быстрое решение, поэтому я просто использовал текстовое поле с этими свойствами:

есть лучший, основанный на ответе @hypo ' s

int width = this.Parent == null ? this.Width : this.Parent.Width; это позволяет использовать метку автоматического роста при стыковке с родительским элементом, например панелью.

this.Height = sz.Height + Padding.Bottom + Padding.Top; здесь мы позаботимся о прокладке для верхней части и дна.

обработки ClientSizeChanged event панели, что делает метка заполнить пробел:

Set Auto-Size для метки true

не уверен, что он будет соответствовать всем прецедентам, но я часто использую простой трюк, чтобы получить поведение упаковки: положите ваш Label с AutoSize=false внутри 1x1 TableLayoutPanel который позаботится о Label 's размер.

установите для свойства AutoEllipsis значение "TRUE", а для свойства AutoSize - "FALSE".

enter image description here

enter image description here

Если ваша панель ограничивает ширину вашей метки, Вы можете установить свойство привязки метки влево, вправо и установить AutoSize в true. Это концептуально похоже на прослушивание панели SizeChanged событие и обновление MaximumSize метки до new Size(((Control)sender).Size.Width, 0) как было предложено предыдущий ответ. Каждая сторона, перечисленная в свойстве Anchor, хорошо привязана к соответствующей внутренней стороне содержащего элемента управления. Таким образом, перечисление двух противоположных сторон в Anchor эффективно устанавливает измерение контроля. Привязка слева и справа задает свойство Width элемента управления, а привязка сверху и снизу-свойство Height.

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

  • установить autosize true
  • установить максимальную ширину, как вы хотите это
  • установить минимальную ширину тож

теперь метка имеет постоянную ширину, но она автоматически адаптирует свою высоту.

затем для динамического текста уменьшите размер шрифта. При необходимости используйте этот фрагмент в подразделе, где находится текст метки set:

это помогло мне в моей форме под названием InpitWindow: В конструкторе для этикетки:

Если размеры кнопки необходимо сохранить без изменений:

простым ответом на эту проблему является изменение свойства DOCK метки. По умолчанию это "NONE".

использовать style="overflow:Scroll" в метке, как в приведенном ниже HTML. Это добавит полосу прокрутки в метку внутри панели.

Как я могу добавить новую строку в текст метки в WPF, такие как следующие?

(“10” – число ASCII для символа новой строки)

(“A” представляет собой число в ASCII для символа новой строки в hex)


Элемент предназначен для вывода текстовой информации, для создания простых надписей:

Ключевым свойством здесь является свойство Text , которое задает текстовое содержимое. Причем в случае

данное свойство задается неявно.

С помощью таких свойств, как FontFamily, TextDecorations и др., мы можем настроить отображение текста. Однако мы можем задать и более сложное форматирование, например:


Элементы Run представляют куски обычного текста, для которых можно задать отдельное форматирование.

Для изменения параметров отображаемого текста данный элемент имеет такие свойства, как LineHeight , TextWrapping и TextAlignment .

Свойство LineHeight позволяет указывать высоту строк.

Свойство TextAlignment выравнивает текст по центру (значение Center), правому (Right) или левому краю (Left):

Если нам вдруг потребуется перенести текст на другую строку, то тогда мы можем использовать элемент LineBreak :

TextBox

Если TextBlock просто выводит статический текст, то этот элемент представляет поле для ввода текстовой информации.

Он также, как и TextBlock, имеет свойства TextWrapping , TextAlignment и TextDecorations .

С помощью свойства MaxLength можно задать предельное количество вводимых символов.

Для отображения полос прокрутки TextBox поддерживает свойства VerticalScrollBarVisibility и НоrizontalScrollBarVisibility :

Для выделения текста есть свойства SelectionStart , SelectionLength и SelectionText . Например, выделим программно текст по нажатию кнопки:

Обработчик нажатия кнопки:

Проверка орфографии


Метка (Label)

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

PasswordBox

Элемент предназначен для ввода парольной информации. По сути это тоже текстовое поле, только для ввода символов используется маска. Свойство PasswordChar устанавливает символ маски, отображаемый при вводе пароля. Если это свойство не задано, то по умолчанию для маски символа используется черная точка. Свойство Password устанавливает парольную строку, отображаемую по умолчанию при загрузке окна приложения.


RichTextBox

Для вывода текстового содержимого, насыщенного форматированием, графикой, предназначен RichTextBox. Можно даже сказать, что он выводит не просто текст, а документы с более сложным форматированием, чем обычный TextBox. Более подробно о нем, а также как на его основе создать простой текстовый редактор, мы поговорим в главе, посвященной документам.

I have a TextBox and a Label. After clicking a button, I execute the following code:

My question is, how do I enable text wrapping of the label? There may be too much text to display on one line, and I want it to automatically wrap to multiple lines if that is the case.


10 Answers 10

However, a Label uses a TextBlock to render text (if a string is placed in the Content property, which it typically is); therefore, you can add a style for TextBlock inside the Label like so:

This way you get to keep the functionality of a Label whilst also being able to wrap the text.

Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля. Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
. (продолжение следует) .
Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца.



user posted image

Да, но где, или т.е. как часто их ставить? Если через каждые 10 символов, то будет типа этого:

Охота чтоб как в Memo текст переносился, но мемо мне не подходит, - оно не умеет heigth делать по количеству строк - появляется Scroll



Охота чтоб как в Memo текст переносился, но мемо мне не подходит, - оно не умеет heigth делать по количеству строк - появляется Scroll

Скрол можно не показывать. а высоту подбирать от количества строк.

Да, но где, или т.е. как часто их ставить? Если через каждые 10 символов, то будет типа этого:

Запись была обновлена

Компонент Label – это простая текстовая метка, предназначенная для вывода текста. Свойство Caption типа AnsiString позволяет принимать текст и выводить его в приложении. Задавать значение свойству можно как через «Инспектор объектов», так и программно. Свойство Caption автоматически преобразовывает любой тип в строку.

Компонент Label позволяет вносить в метку так же и смешанную информацию, т.е. принимать строки символов и числа. Для этого необходимо применить функции преобразования FloatToStr (из вещественного в строки) и IntToStr (из целочисленного в строки). При формировании текста из нескольких частей их следует объединять операцией «+» (склеивание или конкатенация). Например, в приложении рассчитывается математическая операция и её нужно вывести в текстовую метку Label:

Свойства Label

  • Color – задаёт цвет фона. Если не указывать, то по умолчанию выставляется с цветом формы, имитируя прозрачность фона компонента Label.
  • Font – задаёт тексту цвет, шрифт, размер и прочие параметры.
  • Top, Left, Height, Width, Aline – задают координаты (размещение) компонента, размеры на форме и изменение при изменении родительского компонента.
  • AutoSize – устанавливает автоматическое изменение размера. Если значение установлено в true, то горизонтальный и вертикальный размеры компонента Label будет изменяться по соотношению его текста. Если установлено false, то текст будет выравниваться внутри компонента Label значением свойства Alignment.
  • Alignment – задаёт расположение текста по левому или правому краю, или же по центру области метки.
  • WordWrap – разрешает перенос по словам на новую строчку при длинных надписях, если значение установлено в true. Если AutoSize установить в false и выставить небольшую длину компонента Label при AutoSize установленном false, то текст, не влезающий в область метки, будет обрезаться.
  • FocusControl – превращает компонент Label в некое подобие управляющего элемента в фокусируемый компонент. Если в свойстве Caption поставить символ амперсанд «&» в тексте перед каким-нибудь символом, то он будет подчёркнутым. Теперь этот символ становится управляющим элементом.

В свойстве FocusControl компонента текстовой метки Label из выпадающего списка нужно выбрать нужный компонент (список соответствует всем компонентам размещённых на форме приложения). Свойство ShowAccelChar должно быть установлено в true. Комбинация кнопок Alt+«подчеркнутый символ» позволят выполнить ускоренный доступ к выбранному компоненту.

FocusControl компонента текстовой метки Label

Текстовая метка StaticText

Компонент StaticText – это текстовая метка, предназначенная для вывода текста. Свойство Caption, как и у компонент Label, имеет тип AnsiString и позволяет принимать не только текст, но и смешанную информацию. Также автоматически преобразовывает любой тип в строку.

При использовании смешанной информации в свойстве Caption компонента StaticText необходимо применять функции преобразования FloatToStr (из вещественного в строки) и IntToStr (из целочисленного в строки). Компонент StaticText поддерживает операцию объединения «+» (склеивание или конкатенация).

Свойства StaticText

StaticText поддерживает все свойства, что и метка Label, но имеет одно дополнение.

  • sbsNone – скрывает рамку и метка StaticText становится как Label;
  • sbsSingle – устанавливает чёрную рамку;
  • sbsSunken – устанавливает тип утопленного текста в область StaticText.

Панель Panel

Компонент Panel – это панель, позволяющая компоновать компоненты в своей области на форме приложения, но и прекрасно подходит для отображения текста.

Компонент Panel

Компонент Panel обладает всем функционалом, что Label и StaticText. Свойство Caption имеет тип AnsiString и автоматически преобразует вводимое значение в строку.

Поддерживает операцию объединения «+» (склеивание или конкатенация) при вводе смешанной информации:

Читайте также: