ВПФ:Я не понимаю класс TextCompositionEventArgs
-
05-07-2019 - |
Вопрос
Я не понимаю класс TextCompositionEventArgs.
Существуют члены строки типа ControlText,SystemText,Text.Затем есть поле TextConmposistion, которое само содержит элементы ControlText, SystemText и снова Text, а также поля SystemCompositionText и CompositionText.
public class TextCompositionEventArgs : InputEventArgs
{
..
public string ControlText { get; }
public string SystemText { get; }
public string Text { get; }
public TextComposition TextComposition { get; }
}
public class TextComposition : DispatcherObject
{
..
public string CompositionText { get; protected set; }
public string ControlText { get; protected set; }
public string SystemCompositionText { get; protected set; }
public string SystemText { get; protected set; }
public string Text { get; protected set; }
}
Оба элемента Text содержат текст, набранный с клавиатуры, все остальные поля содержат пустые строки.
Чем эти поля отличаются и для чего они нужны?
Решение
TextCompositionEventArgs обрабатывает изменения при составлении текста, поэтому у него есть множество свойств, касающихся текста и того, что конкретно меняется, а то, как вы его используете, зависит от того, какие события вы обрабатываете.
Основные вещи, которые нужно понимать:
Текст:Он содержит фактический текст, вызвавший событие — обычно это текст, набранный пользователем.
Системный текст:Содержит системные текстовые события, т.е.:если вы нажмете Alt+букву, вы увидите событие здесь.Обычно это нажатия клавиш, которые не влияют на текст в элементе управления, таком как текстовое поле.
Контрольный текст:Это управляющие текстовые события, т.е.:если вы нажмете Ctrl+буква, вы увидите это здесь.Похоже на: Системный текст.
Обычно, если вы просто ищете стандартные «текстовые» события, вам просто нужно просмотреть свойство «Текст».Подробности см. Обзор входов.