c# - 防止无效的文本框输入绑定(bind)到业务对象属性?

标签 c# .net winforms validation data-binding

我有一个简单的 winforms 应用程序,其中包含一个表单、一些控件和一个定义如下的业务对象:

public class BusinessObject : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, e);
        }
    }

    private string _phoneNumber;
    public string PhoneNumber
    {
        get { return _phoneNumber; }
        set
        {
            if (_phoneNumber == value)
            {
                return;
            }

            _phoneNumber = value;
            OnPropertyChanged(new PropertyChangedEventArgs("PhoneNumber"));
        }
    }

在我的表单上,我有一个通过绑定(bind)源绑定(bind)到 PhoneNumber 属性的文本框,并且数据源更新模式设置为 OnPropertyChanged。这一切都按预期进行。在将文本分配给我的业务对象上的 PhoneNumber 属性之前,我需要对文本进行一些验证。我认为我应该在文本框的验证事件处理程序中执行此操作,如果输入无效,我将显示错误提供程序并设置 e.Cancel = true。不幸的是,这并不能阻止无效输入绑定(bind)到 PhoneNumber 属性。有没有简单的方法可以做到这一点?

最佳答案

Data Validation可能正是您正在寻找的东西。应防止无效输入更改您的对象。

关于c# - 防止无效的文本框输入绑定(bind)到业务对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017313/

相关文章:

c# - Winforms 中的窗口句柄调试

c# - 同步调用 BackgroundWorker

c# - 从代码进行外部网站搜索

c# - .Net 3.5 中的 Configuration.Save() 在部署/ Release模式下不起作用

c# - .NET 标签中的文本格式

c# - 如何为应用程序设置样式,以便所有控件均显示在应用程序的配色方案中

c# - 电话 7 : how does it execute code?

c# - 关于使用哪种语言进行浏览器自动化和抓取的建议

c# - 如何使用 C# 在 tfs 中创建具有本地文件夹映射的工作区

c# - .NET C# - 位图和图像加载的图像都小于预期