Previous topicNext topic
Help > 开发指南 > 窗体开发 > 控件参考 > 控件参考 > 通用成员 > 接口 > IBindingControl >
Error

Error错误信息

我们在控件的Validating事件或者TextChanged事件中可能会用到一些数据验证,比如说手机号码的格式有问题、新密码每一遍输入的密码跟第二遍输入的密码不一致等等。这些异常如果用弹出窗口提示给用户的话,用户体验会非常差,这些数据动态验证的代码执行会很频繁,用弹出窗口也不太合适,所以直接设置一个错误信息,以一个非常显眼的警示符号显示出来,鼠标移动上去的话,还会显示提示信息。以这种方式提示的话,效果就会好多了。

新密码两次密码对比(这里只是作为演示,没有将密码用*屏蔽),如果不一样则提示错误信息,如果一样则设置Error属性为空字符串。

Vb.Net
Public Sub txtNewPwdS_TextChanged(sender As Object,e As  System.EventArgs)
    Dim txtNewPwdFirst As BoxTextBox=Me.SmForm.ControlDictionary()("txtNewPwdFirst")
    Dim txtNew As SmTextBox=sender
    If txtNewPwdFirst.BaseControl.Text<>txtNew.Text Then
        txtNew.Error="新密码前后不一致"
    Else
        txtNew.Error=""
    End If
End Sub

C#
public void txtNewPwdS_TextChanged(object sender, System.EventArgs e)
{
    BoxTextBox txtNewPwdFirst = this.SmForm.ControlDictionary()["txtNewPwdFirst"] as BoxTextBox;
    SmTextBox txtNew = sender;
    if (txtNewPwdFirst.BaseControl.Text != txtNew.Text)
        txtNew.Error = "新密码前后不一致";
    else
        txtNew.Error = "";
}

如果我们想清空当前窗口中所有的错误信息的话,可以考虑用下面的代码。直接通过SmForm.ErrorProvider.Clear()

Vb.Net
Public Sub txtNewPwdS_TextChanged(sender As Object,e As  System.EventArgs)
    Dim txtNew As SmTextBox=sender
    txtNew.Form().ErrorProvider.Clear()
    '如果在窗体内还可以
    Me.SmForm.ErrorProvider.Clear()
End Sub

C#
public void txtNewPwdS_TextChanged(object sender, System.EventArgs e)
{
    SmTextBox txtNew = sender;
    txtNew.Form().ErrorProvider.Clear();
    //如果在窗体内还可以
    this.SmForm.ErrorProvider.Clear();
}