Как подписать textbox c
Перейти к содержимому

Как подписать textbox c

  • автор:

в C# запросить ввод в форму textbox

Простейший. Это по сути то, что уже предложил Egor. Помещаем Label рядом с нашим текстбоксом. Подписываем текстбокс на событие TextChanged , в нём пишем следующий код:

private void TextBox1_TextChanged(object sender, EventArgs e)

Без применения дополнительного ярлыка. Подписываем наш TextBox на два события: Enter и Leave .

private void textBox2_Enter(object sender, EventArgs e) < if (textBox2.Text == "Введите значение") < textBox2.Text = ""; textBox2.ForeColor = SystemColors.WindowText; >> private void textBox2_Leave(object sender, EventArgs e) < if (textBox2.Text.Trim() == "") < textBox2.Text = "Введите значение"; textBox2.ForeColor = SystemColors.GrayText; >> 

Создаём класс-наследник, в котором посылаем специальное сообщение с помощью WinAPI функции SendMessage. В результате, когда TextBox пустой и не в фокусе, в нём будет выводиться watermark.

class WatermarkedTextBox : TextBox < [DllImport("user32.dll", CharSet = CharSet.Unicode)] private static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wp, string lp); protected override void OnHandleCreated(EventArgs e) < const uint msg = 0x1501; base.OnHandleCreated(e); if (IsHandleCreated) < SendMessage(Handle, msg, IntPtr.Zero, "Введите значение"); >> > 

Ещё один способ — применение класса ErrorProvider.

Добавьте на форму этот компонент. Задайте ему желаемые значения свойств ( BlinkStyle ). Подпишите TextBox на событие Validating . В нём пишете код:

private void textBox3_Validating(object sender, CancelEventArgs e)

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

В принципе, можно совместить ErrorProvider с одним из других способов.

Позже в TextBox было добавлено свойство PlaceholderText.

Текстовое поле

Элемент управления TextBox позволяет пользователю вводить текст в приложение. Обычно он используется для записи одной строки текста. Но элемент можно настроить и для записи нескольких строк. Текст отображается на экране в простом унифицированном формате обычного текста.

Текстовое поле

Элемент TextBox имеет несколько компонентов, которые могут упростить ввод текста. В этом элементе работает привычное встроенное контекстное меню с поддержкой копирования и вставки текста. Кнопка «Очистить все» позволяет пользователю быстро удалить весь введенный текст. В нем также есть встроенные функции проверки орфографии, которые включены по умолчанию.

Выбор правильного элемента управления

Используйте элемент управления TextBox, чтобы пользователь мог вводить и редактировать неформатированный текст, в частности, в форме. С помощью свойства Text можно получить и задать текст в элементе управления TextBox.

Вы можете сделать элемент TextBox предназначенным только для чтения. Но это должно быть временным, условным состоянием. Если текст не редактируется, попробуйте использовать элемент TextBlock.

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

Используйте элемент управления AutoSuggestBox, чтобы позволить пользователю искать термины или показать пользователю список рекомендаций для выбора во время ввода.

Элемент RichEditBox служит для отображения и правки текстовых файлов.

Дополнительные сведения можно найти в статье об элементах управления текстом.

Рекомендации

  • Используйте метку или подстановочный текст, если назначение текстового поля не очевидно. Метка отображается независимо от того, указано ли значение в поле ввода. Подстановочный текст отображается внутри поля ввода текста и пропадает после ввода значения.
  • Задайте для текстового поля достаточную ширину для всех его возможных значений. Длина слов различается в зависимости от языка. Поэтому если вы собираетесь выводить свое приложение на международный уровень, следует учитывать особенности локализации.
  • Поле текстового ввода обычно состоит из одной строки ( TextWrap = «NoWrap» ). Если пользователям придется вводить или изменять длинную строку, используйте многострочное текстовое поле ( TextWrap = «Wrap» ).
  • Обычно текстовое поле используется для ввода редактируемого текста. Но можно сделать текстовое поле доступным только для чтения, чтобы его содержимое можно было читать, выделять и копировать, но не изменять.
  • Если нужно избежать заполнения представления ненужными данными, сделайте так, чтобы набор полей текстового ввода появлялся только после установки управляющего флажка. Состояние включения поля текстового ввода также можно привязать к элементу управления, например к флажку.
  • Подумайте о том, как должно вести себя поле текстового ввода, содержащее значение, когда его выбирает пользователь. Поведение по умолчанию подходит для редактирования значений, но не для замены. Точка вставки помещается между словами, и ничего не выделяется. Если замена является наиболее распространенным вариантом использования для этого текстового поля, то можно настроить выделение всего текста в поле при получении фокуса элементом управления. Вводимый с клавиатуры текст заменит выделенный текст.

Поля ввода из одной строки

  • Используйте несколько однострочных текстовых полей для сбора небольших фрагментов текстовой информации. Если текстовые поля связаны между собой, сгруппируйте их.
  • Делайте однострочные текстовые поля немного шире предполагаемого текста. Если элемент управления получится слишком широким, разделите его на два элемента. Например, можно разделить однострочное поле адреса на «Адрес, строка 1» и «Адрес, строка 2».
  • Задайте максимальную длину вводимого текста в символах. Если базовый источник данных не позволяет вводить длинные строки текста, ограничьте ввод и сообщите пользователю об ограничении с помощью всплывающего окна.
  • Чтобы пользователи могли вводить маленькие фрагменты текста, используйте однострочные элементы управления. В следующем примере показано текстовое поле для записи ответа на вопрос безопасности. Так как предполагается краткий ответ, то здесь вполне подходит поле, состоящее из одной строки. Ввод простых данных
  • Для ввода данных особого формата используйте набор коротких однострочных элементов управления фиксированного размера. Ввод форматированных данных
  • Для ввода или правки текста используйте однострочный элемент управления неограниченного размера в сочетании с кнопкой, нажав на которую, пользователь сможет выбрать допустимое значение. Ввод данных с выбором

Элементы управления для ввода многострочного текста

Длинный текст

  • При создании текстового поля в формате RTF следует предусмотреть кнопки стиля и реализовать их действия.
  • Используйте шрифт, соответствующий стилю вашего приложения.
  • Высота текстового элемента управления должна быть достаточной для ввода типичных записей.
  • При записи больших объемов текста с ограничением количества символов или слов используйте простое текстовое поле. Предоставьте динамический счетчик, показывающий пользователю, сколько символов или слов у него осталось до достижения максимального ограничения. Счетчик придется создать самостоятельно. Разместите его под текстовым полем и обеспечьте динамическое обновление при вводе пользователем символов или слов.
  • При вводе пользователем текста элементы управления не должны увеличиваться по высоте.
  • Не используйте поле для многострочного текста там, где требуется ввести всего одну строку.
  • Не используйте поле с форматом там, где достаточно элемента управления обычного текста.

UWP и WinUI 2

Сведения и примеры в этой статье оптимизированы для приложений, использующих Windows App SDK и WinUI 3, но обычно применимы к приложениям UWP, использующим WinUI 2. Сведения и примеры для конкретной платформы см. в справочнике по API UWP.

Этот раздел содержит сведения, необходимые для использования элемента управления в приложении UWP или WinUI 2.

API для этого элемента управления существуют в пространстве имен Windows.UI.Xaml.Controls .

  • API UWP:класс TextBox, свойство Text
  • Откройте приложение «Коллекция WinUI 2» и просмотрите TextBox в действии. Приложения из коллекции WinUI 2 включают интерактивные примеры большинства элементов управления, возможностей и функций WinUI 2. Получите приложение из Microsoft Store или получите исходный код в GitHub.

Мы рекомендуем использовать последнюю версию WinUI 2 , чтобы получить самые актуальные стили и шаблоны для всех элементов управления. WinUI 2.2 или более поздней версии включает новый шаблон для этого элемента управления, использующий скругленные углы. Дополнительные сведения см. в разделе о радиусе угла.

Создание текстового поля

  • Важные API:класс TextBox, свойство Text

Приложение коллекции WinUI 3 содержит интерактивные примеры большинства элементов управления, функций и функций WinUI 3. Получение приложения из Microsoft Store или получение исходного кода на GitHub

Вот код XAML для простого текстового поля с заголовком и замещающим текстом.

TextBox textBox = new TextBox(); textBox.Width = 300; textBox.Header = "Notes"; textBox.PlaceholderText = "Type your notes here"; // Add the TextBox to the visual tree. rootGrid.Children.Add(textBox); 

Ниже показано текстовое поле, полученное в результате выполнения этого фрагмента кода XAML.

Простое текстовое поле

Использование текстового поля для ввода данных в форму

Текстовое поле часто используется, чтобы принять ввод данных в форму и получить полную текстовую строку из текстового поля с помощью свойства Text. Обычно доступ к свойству Text осуществляется в таких событиях, как нажатие кнопки «Отправить». Но вы можете использовать событие TextChanged или TextChanging, если нужно выполнить какие-либо действия сразу при изменении текста.

В этом примере показано, как получить и задать текущее содержимое текстового поля.

string sampleText = SampleTextBox.Text; . SampleTextBox.Text = "Sample text retrieved"; 

К текстовому полю можно добавить Header (или метку) и PlaceholderText (или водяной знак), чтобы пользователь понимал, для чего оно используется. Чтобы настроить оформление заголовка, задайте свойство HeaderTemplate вместо Header. Сведения о проектировании см. в руководстве по использованию меток.

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

В текстовом поле есть кнопка «Очистить все» («X»), которая появляется при введении текста в поле. Когда пользователь нажимает кнопку «X», текст в поле удаляется. Это выглядит следующим образом:

Текстовое поле с кнопкой

Кнопка «Очистить все» отображается только для редактируемых однострочных текстовых полей, которые содержат текст и имеют фокус.

Кнопка «Очистить все» не отображается в любом из перечисленных ниже случаев.

В этом примере показано, как получить и задать текущее содержимое текстового поля.

string sampleText = SampleTextBox.Text; . SampleTextBox.Text = "Sample text retrieved"; 

Текст, предназначенный только для чтения

Текстовое поле можно сделать доступным только для чтения, присвоив свойству IsReadOnly значение true. Обычно вы переключаете это свойство в приложении, исходя из условий в приложении. Если вам нужен текст, который всегда предназначен только для чтения, воспользуйтесь элементом TextBlock.

Объект TextBox можно сделать доступным только для чтения, присвоив свойству IsReadOnly значение true. Например, у вас может быть элемент TextBox для пользовательских комментариев, который включается только при определенных условиях. Элемент TextBox можно сделать предназначенным только для чтения, пока не будут выполняться эти условия. Если вам нужно только отобразить текст, воспользуйтесь элементом TextBlock или RichTextBlock.

Текстовое поле, предназначенное только для чтения, ничем не отличается от текстового поля, предназначенного для чтения и записи. Поэтому пользователь может растеряться. Пользователь может выделять и копировать текст. IsEnabled

Включение многострочного ввода

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

  • Чтобы позволить текстовому полю разрешать и отображать символы новой строки или возврата, установите для свойства AcceptsReturn значение true.
  • Чтобы включить обтекание текстом, установите для свойства TextWrapping значение Wrap. Теперь текст будет переноситься на новую строку, когда он достигает края текстового поля, независимо от символов разделителя строки.

TextBox и RichEditBox не поддерживают значение WrapWholeWords для свойств TextWrapping. Если попытаться указать WrapWholeWords в качестве значения для параметра TextBox.TextWrapping или RichEditBox.TextWrapping, отобразится исключение с сообщением о недействительном аргументе.

Многострочное текстовое поле будет постоянно увеличиваться по вертикали по мере ввода текста, если нет ограничений в свойстве Height, MaxHeight или родительском контейнере. Следите за тем, чтобы многострочное текстовое поле не выходило за пределы видимой зоны. Если это произошло, ограничьте его увеличение. Мы рекомендуем всегда указывать целесообразную высоту для многострочного текстового поля и не позволять ему увеличиваться в высоту во время ввода текста пользователем.

Прокрутка с помощью колесика прокрутки или пальца включается автоматически по мере необходимости. Но вертикальные полосы прокрутки не отображаются по умолчанию. Вы можете отобразить вертикальные полосы прокрутки, установив для параметра ScrollViewer.VerticalScrollBarVisibility значение Auto для встроенного класса ScrollViewer, как показано здесь.

TextBox textBox = new TextBox(); textBox.AcceptsReturn = true; textBox.TextWrapping = TextWrapping.Wrap; textBox.MaxHeight = 172; textBox.Width = 300; textBox.Header = "Description"; ScrollViewer.SetVerticalScrollBarVisibility(textBox, ScrollBarVisibility.Auto); 

Вот как выглядит текстовое поле после добавления текста.

Поле многострочного текста

Форматирование отображаемого текста

Используйте свойство TextAlignment для выравнивания текста в текстовом поле. Чтобы выровнять текстовое поле в рамках макета страницы, используйте свойства HorizontalAlignment и VerticalAlignment.

Хотя текстовое поле поддерживает только неформатированный текст, вы можете настроить отображение текста в текстовом поле в соответствии с фирменным оформлением. Можно задать стандартные свойства Control, например, FontFamily, FontSize, FontStyle, Background, Foreground и CharacterSpacing, чтобы изменить внешний вид текста. Эти свойства влияют только на то, как текстовое поле отображает текст локально. Например, если скопировать и вставить текст в элемент управления для форматированного текста, форматирование не будет применено.

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

TextBox textBox = new TextBox(); textBox.Text = "Sample Text"; textBox.IsReadOnly = true; textBox.FontFamily = new FontFamily("Verdana"); textBox.FontSize = 24; textBox.FontWeight = Windows.UI.Text.FontWeights.Bold; textBox.FontStyle = Windows.UI.Text.FontStyle.Italic; textBox.CharacterSpacing = 200; textBox.Width = 300; textBox.Background = new SolidColorBrush(Windows.UI.Colors.Beige); textBox.Foreground = new SolidColorBrush(Windows.UI.Colors.Blue); // Add the TextBox to the visual tree. rootGrid.Children.Add(textBox); 

Созданное текстовое поле выглядит следующим образом:

Форматированное текстовое поле

Изменение контекстного меню

По умолчанию команды, отображаемые в контекстном меню текстового поля, зависят от состояния текстового поля. Например, если текстовое поле является редактируемым, отображаются следующие команды:

Команда Отображается, когда.
Копировать . текст выделен.
Вырезать . текст выделен.
Вставить . буфер обмена содержит текст.
Выбрать все . элемент TextBox содержит текст.
Отмена . текст был изменен.

Чтобы изменить команды, отображаемые в контекстном меню, обрабатывайте событие ContextMenuOpening. Пример см. в разделе Настройка CommandBarFlyout RichEditBox — добавление «Share» в коллекцию WinUI 2. Сведения о проектировании см. в руководстве по контекстным меню.

Выделение, копирование и вставка

Получить выбранный текст из текстового поля или задать его можно с помощью свойства SelectedText. Чтобы управлять выделением текста, используйте свойства SelectionStart и SelectionLength, а также методы Select и SelectAll. Событие SelectionChanged позволяет выполнять действия, пока пользователь выбирает или отменяет выбор текста. Вы можете изменить цвет, используемый для выделения выбранного текста, настроив свойство SelectionHighlightColor.

Элемент TextBox поддерживает копирование и вставку по умолчанию. Вы можете реализовать в приложении пользовательскую обработку события Paste в редактируемых текстовых элементах управления. Например, можно удалить разрывы строк из многострочного адреса при вставке в однострочное поле поиска. Или вы можете проверить длину вставленного текста и предупредить пользователя, если превышает максимальную длину текста, который можно сохранить в базе данных. Дополнительные сведения и примеры см. в статье о событии Paste.

Ниже приведен пример применяемых для этого свойств и методов. При выборе текста в первом текстовом поле выбранный текст отображается во втором текстовом поле, которое доступно только для чтения. Значения свойств SelectionLength и SelectionStart отображаются в двух текстовых блоках. Для этого используется событие SelectionChanged.

private void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)

Вот результат выполнения этого кода.

Выбранный текст в текстовом поле

Выбор подходящей клавиатуры для элемента управления текстом

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

Сенсорная клавиатура позволяет вводить текст, если приложение выполняется на устройстве с сенсорным экраном. Сенсорная клавиатура появляется, когда пользователь касается редактируемого поля ввода, например, TextBox или RichEditBox. Пользователи смогут вводить данные в вашем приложении гораздо быстрее и с меньшими усилиями, если вы настроите тип вводимых данных элемента управления текстом в соответствии с типом вводимых данных. Тип вводимых данных предоставляет системе подсказку о типе текстового ввода, ожидаемого элементом управления. Благодаря этому система может отобразить специальную раскладку сенсорной клавиатуры в соответствии с используемым типом ввода.

Например, если текстовое поле используется только для ввода 4-значного PIN-кода, установите для свойства InputScope значение Number. Это сообщает системе, что нужно отобразить раскладку цифровой клавиатуры, благодаря чему пользователю проще вводить PIN-код.

Важно Входной область не приводит к проверке ввода и не запрещает пользователю вводить данные с помощью аппаратной клавиатуры или другого устройства ввода. Вы по-прежнему несете ответственность за проверку вводимых данных в коде.

Другие свойства, влияющие на сенсорную клавиатуру: IsSpellCheckEnabled, IsTextPredictionEnabled и PreventKeyboardDisplayOnProgrammaticFocus. (IsSpellCheckEnabled также влияет на элемент TextBox при использовании аппаратной клавиатуры.)

Дополнительные сведения и примеры см. в статье Использование типа вводимых данных для изменения сенсорной клавиатуры и в документации по свойствам.

Получение примера кода

  • Пример коллекции WinUI — просмотр всех элементов управления XAML в интерактивном формате.

Похожие статьи

  • Текстовые элементы управления
  • Руководство по проверке орфографии
  • Добавление поиска
  • Руководство по текстовому вводу
  • Класс TextBox
  • Класс PasswordBox
  • Свойство String.Length

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

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

Как подписать textbox c

Для ввода и редактирования текста предназначены текстовые поля — элемент TextBox. Так же как и у элемента Label текст элемента TextBox можно установить или получить с помощью свойства Text.

По умолчанию при переносе элемента с панели инструментов создается однострочное текстовое поле. Для отображения больших объемов информации в текстовом поле нужно использовать его свойства Multiline и ScrollBars . При установке для свойства Multiline значения true, все избыточные символы, которые выходят за границы поля, будут переноситься на новую строку.

Кроме того, можно сделать прокрутку текстового поля, установив для его свойства ScrollBars одно из значений:

Элемент TextBox в Windows Forms

  • None : без прокруток (по умолчанию)
  • Horizontal : создает горизонтальную прокрутку при длине строки, превышающей ширину текстового поля
  • Vertical : создает вертикальную прокрутку, если строки не помещаются в текстовом поле
  • Both : создает вертикальную и горизонтальную прокрутку

Автозаполнение текстового поля

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

Итак, добавим на форму текстовое поле и пропишем в код события загрузки следующие строки:

public partial class Form1 : Form < public Form1() < InitializeComponent(); AutoCompleteStringCollection source = new AutoCompleteStringCollection() < "Кузнецов", "Иванов", "Петров", "Кустов" >; textBox1.AutoCompleteCustomSource = source; textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; > >

Автозаполнение текстового поля

Режим автодополнения, представленный свойством AutoCompleteMode , имеет несколько возможных значений:

  • None : отсутствие автодополнения
  • Suggest : предлагает варианты для ввода, но не дополняет
  • Append : дополняет введенное значение до строки из списка, но не предлагает варианты для выбора
  • SuggestAppend : одновременно и предлагает варианты для автодополнения, и дополняет введенное пользователем значение

Перенос по словам

Чтобы текст в элементе TextBox переносился по словам, надо установить свойство WordWrap равным true . То есть если одно слово не умещается на строке, то но переносится на следующую. Данное свойство будет работать только для многострочных текстовых полей.

Ввод пароля

Также данный элемент имеет свойства, которые позволяют сделать из него поле для ввода пароля. Так, для этого надо использовать PasswordChar и UseSystemPasswordChar .

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

Свойство UseSystemPasswordChar имеет похожее действие. Если мы установим его значение в true , то вместо введенных символов в текстовом поле будет отображаться знак пароля, принятый в системе, например, точка.

Событие TextChanged

Из всех событий элемента TextBox следует отметить событие TextChanged , которое срабатывает при изменении текста в элементе. Например, поместим на форму кроме текстового поля метку и сделаем так, чтобы при изменении текста в текстовом поле также менялся текст на метке:

public partial class Form1 : Form < public Form1() < InitializeComponent(); textBox1.TextChanged += textBox1_TextChanged; >private void textBox1_TextChanged(object sender, EventArgs e) < label1.Text = textBox1.Text; >>

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode

Перенос строки в TextBox с Multiline

Покажем, как выполнить перенос строки в TextBox с атрибутом Multiline (когда текстовое поле занимает несколько строк). Сделаем это на примере программы в Windows Forms и языка C#.

Создание интерфейса программы для демонстрации переноса строки в TextBox

Создадим проект Windows Forms. На окне формы расположим два элемента управления: кнопку (Button) и текстовое поле (TextBox). В кнопке параметру Text зададим значение «Прочитать файл», поскольку текст в TextBox будем считывать из файла.

Программа для переноса строки в textBox без multiline

Далее займёмся настройкой TextBox. Нажмите правой кнопкой на данном элементе управления и перейдите к Свойствам.

Значение атрибута Multiline установим, как True. Это позволит выводить в TextBox текст в несколько строк, а не в одну.

Изменение значения параметра Multiline у TextBox

Далее активируем полосы прокрутки у TextBox. Это позволит удобнее просматривать и работать с многострочным текстом. Для активации параметр ScrollBars переведём в положение Both — полосы будут по обоим измерениям: по горизонтали и по вертикали.

Активация полос прокрутки ScrollBars в TextBox

Растянем TextBox по горизонтали до низа формы и получим нечто подобное:

Программа для переноса строки в TextBox с атрибутом Multiline и ScrollBars

Интерфейс программы готов.

Создание кода программы для показа возможности перехода на новую строку в TextBox

В Visual Studio два раза щёлкнем на кнопку (Button). Откроется редактор кода обработки нажатия на кнопку. Добавим следующие строки:

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

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