

技术团队分许了许多支持中心的问题,来寻找需要通过MaskBox 属性访问标准文本框的实际用例。根据研究表明,这些案例中大多数属于两个主要类别:自动完成和文本处理(包括自定义输入掩码)。
文本自动完成
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;}
掩码和文本处理 API
- GetCharFromPosition(System.Drawing.Point)
- GetCharIndexFromPosition(System.Drawing.Point)
- GetFirstCharIndexFromLine(System.Int32)
- 和其他(请参阅此处的 TextEdit 方法的完整列表)
这些方法与标准TextBox方法相同,例如TextBoxBase.GetCharFromPosition(Point)。 如果您检索标准TextBox来利用其方法,现在可以使用本机TextEdit API来获得相同的结果。
例如,如果您需要限制用户输入的字节数,以前的版本要求您使用重写的 TextEdit.CreateMaskBoxInstance 方法实现自定义 TextEdit 后代,该方法接受自定义 TextBoxMaskBox 对象。 然后,这个自定义类将处理用户输入。
使用EnableCustomMaskTextInput方法,您不再需要任何继承逻辑,只需在分配的回调中直接检查字节长度。
using DevExpress.Data.Mask;int m_maxByteLength = 5;textEdit1.Properties.EnableCustomMaskTextInput(args => {// Do nothing if no edits were madeif (args.IsCanceled || args.ActionType == CustomTextMaskInputAction.Init)return;if (GetByteLength(args.ResultEditText) > m_maxByteLength) {args.Cancel();return;}args.SetResult(args.ResultEditText, args.ResultCursorPosition, args.ResultSelectionAnchor);});int GetByteLength(string text) {return System.Text.Encoding.Default.GetBytes(text).Length;}
MaskBox 弃用
DevExpress WinForm | 下载试用
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
DevExpress技术交流群6:600715373 欢迎一起进群讨论
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!