2009-09-09 1 views
9

Я не понимаю класс TextCompositionEventArgs.WPF: я не понимаю класс TextCompositionEventArgs

Есть члены типа string с именем 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; } 
} 

Оба текста, как представляется, содержат текст, набранный клавиатурой, а все остальные поля содержат пустые строки.

В каком направлении эти поля отличаются и для чего они хороши?

ответ

11

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

основные вещи, чтобы понять:

  • Текст: Это содержит, что фактический текст, который вызвал событие - обычно пользователя набранный текст

  • SystemText: Это содержит системные текстовые события, а именно: если вы нажмете Alt + letter, вы увидите это событие здесь. Обычно это нажатия клавиш, которые не влияют на текст в элементе управления, например текстовое поле.

  • ControlText: Это текстовые события управления, то есть: если вы нажмете Ctrl + letter, вы увидите его здесь. Подобно SystemText.

Обычно, если вы просто ищете стандартные «текстовые» события, вы просто захотите посмотреть на свойство «Текст». Для получения дополнительной информации см. Input Overview.

+0

Вы знаете, почему ControlText, SystemText, Text дублируются/дублируются в классе TextCompositionEventArgs? – codymanix

+0

Это не так. Например, ControlText - это тест, который происходит при нажатии CTRL. Эти нажатия клавиш не будут отображаться в тексте. –

+0

Я отредактировал мой вопрос и вставил код, чтобы вы могли видеть, что я имею в виду с дублирующимся/избыточным. – codymanix

Смежные вопросы