2009-09-09 4 views
9

Non capisco la classe TextCompositionEventArgs.WPF: Non capisco la classe TextCompositionEventArgs

Ci sono membri della stringa di testo denominata ControlText, SystemText, Text. Poi c'è un campo TextConmposistion che contiene di nuovo 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 questi campi differiscono e a cosa servono?

risposta

11

TextCompositionEventArgs si occupa delle modifiche durante la composizione del testo, quindi dispone di molte proprietà relative al testo e di ciò che specificamente sta cambiando e il modo in cui lo si utilizza dipende da quali eventi si gestiscono.

Le cose fondamentali da capire:

  • Testo: Questo contiene il testo effettivo che ha causato l'evento - normalmente il testo digitato dell'utente

  • SystemText: contiene eventi di testo di sistema, vale a dire: se premi Alt + lettera, vedrai l'evento qui. Normalmente questo è il tipo di battitura che non influisce sul testo in un controllo come una casella di testo.

  • ControlText: Questo è il controllo di eventi di testo, ad esempio: se premi Ctrl + lettera, lo vedrai qui. Simile a SystemText.

Normalmente, se stai solo cercando eventi di "testo" standard, ti basterà dare un'occhiata alla proprietà "Testo". Per dettagli, vedere lo Input Overview.

+0

Sapete perché ControlText, SystemText, Testo sono duplicati/ridondanti nella classe TextCompositionEventArgs? – codymanix

+0

Non lo sono. Ad esempio, ControlText è un test che si verifica quando viene premuto CTRL. Quelle sequenze di tasti non verranno visualizzate nel testo. –

+0

Ho modificato la mia domanda e inserito il codice in modo da poter vedere cosa intendo con duplicato/ridondante. – codymanix