[WinForm每日一帖] 如何验证Editor中输入的数据合法性

本文介绍了在WinForm应用中,如何使用UltraTextEditor的Validate事件来检查用户输入的Item No.是否符合xx.xxxxx.xxx的合法格式。通过对比Leave、Validated和Validating事件,强调了在验证数据合法性时为何选择Validate事件。示例代码展示了在Validating事件中进行检查,如果输入不合法则取消(e.Cancel设为true),合法则在Validated事件中处理后续逻辑,例如选中输入文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  
当user在ultraTextEditor中输入文本后, 有时我们需要check该数据是否是合法的, 比如一个Item No., 它的合法格式是xx.xxxxx.xxx, 其中x代表数字或字母, 如果user输入不是这种形式的数据将是不允许的, 因此有必要对数据的合法性进行check. 这里我们使用Validate事件作check.
(1)   为什么用Validate 事件而不用传统的LostFocus(.Net 中是Leave)
下面的代码是 ultraMaskedEdit1 的三个事件, 分别是Leave,Validated和Validating,当点击ToolBar上的Exit按钮时看哪些能够触发.
        private void ultraTextEditor1_Leave(object sender, EventArgs e)
        {
            MessageBox.Show("Leave event Occured!");
        }
        private void ultraTextEditor1_Validated(object sender, EventArgs e)
        {
            MessageBox.Show("Validated event Occured!");
        }
        private void ultraTextEditor1_Validating(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Validating event Occured!");
        }
结果是Validating和Validated是触发的, 而Leave没有, 这说明当在ultraTextEditor输入数据后希望在点ToolBar上的按钮前通过Leave事件作check是行不通的, 而用Validating和Validated是可以的.
(2)   如何进行Check
在Validating和Validated事件中check. 下面以check 一个Item No. 为例, 在 Validating 写check 逻辑:
        private void ultraTextEditor1_Validating(object sender, CancelEventArgs e)
        {
            string strPattern = "^[A-Z0-9]{2}[.]{1}[A-Z0-9]{5}[.]{1}[A-Z0-9]{3}$";
            Regex objReg = new Regex(strPattern);
            if (objReg.IsMatch(ultraTextEditor1.Text) == false)
            {
                e.Cancel = true;
                MessageBox.Show("Incorrect Item No. format!");
                ultraTextEditor1.Text = "";
            }
        }
1333.3333.3333不是一个合法的Item No.,在Validating中验证失败, e.Cancel就赋true,
 后面的Validated事件就不会触发.
如果验证通过, 后面的Validated会触发, 还可以在其中写其他的逻辑. 如下所示, 当验证通过后就选中文本:
        private void ultraTextEditor1_Validated(object sender, EventArgs e)
        {
            ultraTextEditor1.Select();
        }
如下所示, “AB.12345.EFG”是一个合法的ItemNo. , 验证通过后就选中文本.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值