Вопрос

Я не понимаю класс 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+буква, вы увидите это здесь.Похоже на: Системный текст.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top