WPF: Non capisco la classe TextCompositionEventArgs
-
05-07-2019 - |
Domanda
Non capisco la classe TextCompositionEventArgs.
Esistono membri di tipo stringa denominati ControlText, SystemText, Text. Quindi c'è un campo TextConmposistion che a sua volta contiene nuovamente i membri ControlText, SystemText e Text e inoltre i campi SystemCompositionText e 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; }
}
Entrambi i membri di testo sembrano contenere il testo digitato con la tastiera, tutti gli altri campi contengono stringhe vuote.
In che modo differiscono questi campi e a cosa servono?
Soluzione
TextCompositionEventArgs si occupa delle modifiche durante la composizione del testo, quindi ha molte proprietà che si occupano del testo e di ciò che sta specificamente cambiando, e il modo in cui lo usi dipende da quali eventi stai gestendo.
Le cose di base da capire:
-
Testo: contiene il testo effettivo che ha causato l'evento, normalmente il testo digitato dall'utente
-
SystemText: contiene eventi di testo di sistema, ovvero: se premi Alt + lettera, vedrai l'evento qui. Normalmente si tratta di sequenze di tasti che non influiscono sul testo in un controllo come una casella di testo.
-
ControlText: si tratta di eventi di testo di controllo, ovvero: se premi Ctrl + lettera, lo vedrai qui. Simile a SystemText.
Normalmente, se stai solo cercando il testo " testo " eventi, ti consigliamo di guardare il " Testo " proprietà. Per i dettagli, consultare la Panoramica dell'input .