Чем отличается textbox от textblock
Перейти к содержимому

Чем отличается textbox от textblock

  • автор:

whoa there, pardner!

Your request has been blocked due to a network policy.

Try logging in or creating an account here to get back to browsing.

If you’re running a script or application, please register or sign in with your developer credentials here. Additionally make sure your User-Agent is not empty and is something unique and descriptive and try again. if you’re supplying an alternate User-Agent string, try changing back to default as that can sometimes result in a block.

You can read Reddit’s Terms of Service here.

if you think that we’ve incorrectly blocked you or you would like to discuss easier ways to get the data you want, please file a ticket here.

when contacting us, please include your ip address which is: 193.42.98.58 and reddit account

Элемент TextBlock

TextBlock нельзя назвать элементом управления (control), сам по себе он не наследует класс Control, но используется как и большинство других «контролек» в рамках WPF, так что, ради упрощения процесса, отнесем текстовое поле к элементам управления.

Элемент TextBlock является одним из самых фундаментальных в WPF, поскольку он очень полезен в использовании. Он позволяет разместить текст на экране, как Label, но при этом прост в использовании и не требователен к ресурсам. В общем восприятии, Label это короткий однострочный текст (но может включать в себя, например, изображение), в то время как TextBlock отлично справляется еще и с многострочным текстом, но содержать в себе может исключительно текст (string). Label и TextBlock могут предложить свои уникальные достоинства, но что Вам выбрать — будет очень зависеть от ситуации.

Мы уже использовали TextBlock в главе «Hello, WPF!», но сейчас, давайте рассмотрим этот элемент в его простейшей форме:

  This is a TextBlock  

Это так же просто, как и написано, и, если Вы читали предыдущие разделы данного руководства, то в принципе, не найдете здесь чего-то нового. Текст между открывающим и закрывающим тегами — это упрощенный вариант определения свойства Text текстового поля.

Для следующего примера давайте выведем более длинный текст и посмотрим как TextBlock с ним справится. Также я добавлю отступы, для более элегантного вида:

  This is a TextBlock control and it comes with a very long text  

Работа с большими строками

Скоро скриншот с примером Вас убедит в том, что TextBlock отлично справляется с длинными, многосторчными текстами, но, к сожалению, это не работает по умолчанию. В таком случае, когда текст слишком длинный, для отображения внутри окна, по умолчанию, WPF отобразит максимальное количество знаков, которое вместится по ширине, и просто прекратит дальнейший рендер текста.

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

   This is a TextBlock control with multiple lines of text. This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis. This is a TextBlock control with automatically wrapped text, using the TextWrapping property.  

Здесь было предствлено три элемента TextBlock, каждый разного цвета (свойство Foreground), для наглядности. В каждом решение проблемы большого текста решается по своему:

Красный TextBlock использует тег LineBreak для ручного возврата каретки. Это дает Вам абсолютный контроль над тем, где Вы хотите прервать строку и начать ее с новой, но такое решение недостаточно гибкое для большинства ситуаций. Если пользователь увеличивает окно, текст остается прерванным в том же месте, хотя места для текста размещенного в одну строку уже будет более чем достаточно.

Зеленый TextBlock использует свойство TextTrimming со значением CharacterEllipsis, для того, чтобы в конце строки TextBlock добавить многоточие, когда текст уже не будет вмещаться по ширине. Это распространенный метод сигнализирования о том, что текста имеется больше, чем позволяет вместить контейнер. Это может пригодиться в ситуации, когда у Вас есть слишком длинный текст, но Вы не сильно уж и хотите готовить для него дополнительную строку. Альтернативой значению CharacterEllipsis является WordEllipsis, которое при недостатке пространства для текста по ширине, обрежет его до целого слова, вместо того, чтобы вставить многоточие в середине слова.

И третий вариант — синий TextBlock использует свойство TextWrapping со значением Wrap для того, чтобы переносить текст на новую строку всегда, когда текст уже не помещается. В отличие от первого текстового поля, в котором мы вручную управляли переносом строки, здесь, процесс является полностью автоматическим и имеет еще одно достоинство: в случае, когда меняется размер текстового поля, переносы строк обновляются сами. Делая окно больше или меньше Вы можете заметить как ширина строк и переносы приспосабливаются к новым условиям.

Здесь был описан процесс работы с простыми строками в TextBlock. В следующей главе мы рассмотрим более продвинутый функционал этого элемента, который позволит создавать текст различных стилей в TextBlock и многое другое.

Общие сведения о TextBlock

Элемент TextBlock управления обеспечивает гибкую поддержку текста для приложений WPF. Элемент предназначен в первую очередь к основным сценариям пользовательского интерфейса, которые не требуют более одного абзаца текста. Он поддерживает ряд свойств, которые обеспечивают точный контроль над отображением текста, например, FontFamily, FontSize, FontWeight, TextEffects и TextWrapping. Содержимое текста может быть добавлено с помощью свойства Text. При использовании в XAML содержимое между открывающим и закрывающим тегами неявно добавляется в качестве текста элемента.

С помощью XAML очень легко создать экземпляр элемента TextBlock.

 Hello, world! 

Точно так же, элемент TextBlock сравнительно легко использовать в коде.

TextBlock myTextBlock = new TextBlock(); myTextBlock.FontSize = 18; myTextBlock.FontWeight = FontWeights.Bold; myTextBlock.FontStyle = FontStyles.Italic; myTextBlock.Text = "Hello, world!"; 
Dim myTextBlock As New TextBlock() myTextBlock.FontSize = 18 myTextBlock.FontWeight = FontWeights.Bold myTextBlock.FontStyle = FontStyles.Italic myTextBlock.Text = "Hello, world!" 

См. также

Совместная работа с нами на GitHub

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

Чем отличается textbox от textblock

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

 Текст1  

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

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

 О негин был, по мненью многих.  

TextBlock в WPF

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

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

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

Свойство TextWrapping позволяет переносить текст при установке этого свойства TextWrapping=»Wrap» . По умолчанию это свойство имеет значение NoWrap , поэтому текст не переносится.

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

Для декорации текста используется свойство TextDecorations , например, если TextDecorations=»Underline» , то текст будет подчеркнут.

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

 Однажды в студеную зимнюю пору Я из лесу вышел 

TextBox

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

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

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

Начальный текст 

В коде C# мы можем обработать событие изменения текста:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)

По умолчанию, если вводимый текст превышает установленные границы поля, то текстовое поле растет, чтобы вместить весь текст. Но визуально это не очень хорошо выглядит. Поэтому, как и в случае с TextBlock, мы можем перенести непомещающийся текст на новую строку, установив свойство TextWrapping=»Wrap».

Чобы переводить по нажатию на клавишу Enter курсор на следующую строку, нам надо установить свойство AcceptsReturn=»True» .

Также мы можем добавить полю возможность создавать табуляцию с помощью клавиши Tab, установив свойство AcceptsTab=»True»

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

Начальный текст 

Возможно, при создании приложения нам потребуется сделать текстовое поле недоступным для ввода (на время в зависимости от условий или вообще), тогда для этого нам надо установить свойство IsReadOnly=»True» .

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

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

private void Button_Click(object sender, RoutedEventArgs e) < textBox1.SelectionStart = 5; textBox1.SelectionLength = 10; textBox1.Focus(); // данное выражение эквивалентно //textBox1.Select(5, 10); >
Проверка орфографии

TextBox обладает встроенной поддержкой орфографии. Чтобы ее задействовать, надо установить свойство SpellCheck.IsEnabled=»True» . Кроме того, по умолчанию проверка орфографии распространяется только на английский язык, поэтому, если приложение заточено под другой язык, нам надо его явным образом указать через свойство Language :

 Привет, как дила?  

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

Метка (Label)

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

 

Теперь, нажав на клавишу «п», мы переведем фокус на связанное текстовое поле. При вызове приложения подчеркивание не отображается, чтобы отображать подчеркивание, надо нажать на клавишу Alt. Тогда чтобы перевести фокус на связанное текстовое поле необходимо будет нажать сочетание Alt + «п». Если не предполагается использование клавиш быстрого доступа, то для вывода обычной текста вместо меток лучше использовать элемент TextBlock.

PasswordBox

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

PasswordBox в WPF

RichTextBox

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *