Страницы

Поиск по вопросам

суббота, 7 марта 2020 г.

WPF автоматическое изменение регистра текста в textBox

#c_sharp #wpf


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


Ответы

Ответ 1



Подключаем пакет Expression.Blend.Sdk. Пишем поведение для TextBox. public class TextBoxUpperCaseBehavior : Behavior { protected override void OnAttached() { base.OnAttached(); AssociatedObject.TextChanged -= OnTextChanged; AssociatedObject.TextChanged += OnTextChanged; } private void OnTextChanged(object sender, TextChangedEventArgs e) { if (!string.IsNullOrEmpty(AssociatedObject.Text)) { var firstChar = AssociatedObject.Text[0]; if (char.IsLower(firstChar)) { var selectionStart = AssociatedObject.SelectionStart; var upperFirstChar = char.ToUpper(firstChar); var stringTail = AssociatedObject.Text.Substring(1, AssociatedObject.Text.Length - 1); AssociatedObject.Text = string.Format("{0}{1}", upperFirstChar, stringTail); AssociatedObject.SelectionStart = selectionStart; } } } } Подключаем поведение к TextBox на форме.

Ответ 2



Разметка: Код: private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { if (TextBox1.Text != null && TextBox1.Text.Length > 0) TextBox1.Text = TextBox1.Text.Substring(0, 1).ToUpperInvariant() + TextBox1.Text.Substring(1); } Либо, если используется привязка к некоторому свойству, например, Name: private string name; public string Name { get { return name; } set { name = value; if (name != null && name.Length > 0) name = name.Substring(0, 1).ToUpperInvariant() + name.Substring(1); NotifyPropertyChanged(); } }

Ответ 3



Можно использовать стили: оригинал ответа: https://stackoverflow.com/a/19406110/7099599

Комментариев нет:

Отправить комментарий