Dès la version v20.2, DevExpress a annoncé la mise à disposition du mode Advanced Text Editors. Il intègre une série de fonctionnalités avec un impact importants comme le support de l’animation sur le curseur de sélection et les labels intégrés dans les zones de saisies. DevExpress souhaite implémenter ce mode par défaut une fois que tous les retours au support auront été traités.
Comme vous le savez peut-être déjà, tous les éditeurs de texte basculent vers ce mode avancé lorsque le thème WXI est actif. La sélection de texte teinté a peut-être été un indice à cet égard, mais ce n’était certainement pas la seule raison du basculement. Dans le nouveau thème WXI, les éditeurs utilisent des éléments d’arrière-plan supplémentaires qui correspondent aux différents états de l’éditeur. Plus d’éléments signifient des calculs de zone client et de limites supplémentaires, une logique de dessin de bordure et de contenu accrue et une augmentation de la complexité globale.
L’utilisation du mode avancé dans le skin WXI a suscité des discussions autour de la compatibilité du code hérité (code écrit spécifiquement pour le mode éditeur hérité, non avancé). Au premier rang des sujets de préoccupation figurait la propriété MaskBox. Cette propriété permet d’obtenir un contrôle de zone de texte WinForm standard (la base de l’éditeur DevExpress WinForms TextEdit). Étant donné que les TextEdits en mode avancé sont des contrôles personnalisés complets et ne sont plus basés sur des TextBox standard, la propriété MaskBox pour ces éditeurs renvoie null .
Text Auto Completion
La fonctionnalité de saisie semi-automatique est désormais disponible via l’API native TextEditor. Pour introduire la saisie semi-automatique, il faut définir la propriété Editor.AdvancedModeOptions.AutoCompleteSource pour spécifier si l’éditeur suggère des entrées à partir de votre source de données personnalisée ou d’une source remplie automatiquement (éléments récents, URL de la liste d’historique, noms de fichiers et de dossiers système, etc.). Vous devrez spécifier le mode approprié (Suggest, Append, une combinaison des deux ou SuggestSingleWord) et attribuer votre source de données personnalisée (si vous avez sélectionné le mode de saisie semi-automatique CustomSource).
using DevExpress.XtraEditors;
void OnFormLoad(object sender, EventArgs e) {
var DaysOfTheWeek = new AutoCompleteStringCollection();
DaysOfTheWeek.AddRange(new string[]
{"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"});
textEdit1.Properties.UseAdvancedMode = DevExpress.Utils.DefaultBoolean.True;
textEdit1.Properties.AdvancedModeOptions.AutoCompleteMode =
TextEditAutoCompleteMode.SuggestAppend;
textEdit1.Properties.AdvancedModeOptions.AutoCompleteSource =
AutoCompleteSource.CustomSource;
textEdit1.Properties.AdvancedModeOptions.AutoCompleteCustomSource = DaysOfTheWeek;
}
MaskBox Deprecation
Pour résumer, l’API TextEdit permet de répondre à tous les scénarios d’utilisation courants qui nécessitaient auparavant l’utilisation de la propriété MaskBox. Cela signifie que cette propriété va pouvoir être maintenant dépréciée . Cela ne veut pas dire qu’elle sera supprimée entièrement et rendre le code existant invalide. Au lieu de cela, DevExpress considéroedésormais tous les scénarios liés à MaskBox comme obsolètes et recommande plutôt l’utilisation de leur API spécifique.
Article basé sur le billet https://community.devexpress.com/blogs/winforms/archive/2022/07/15/winforms-deprecation-of-the-maskbox-property.aspx