检测数据绑定源中的无效数据

本文关键字:无效 数据 数据绑定 检测 | 更新日期: 2023-09-27 17:55:04

我有一个基于对象数组的数据源组合框,并且Value属性绑定到模型存储库上的属性:

DataSource = someArray;
ValueMember = "ArrayValue";
DisplayMember = "Name";
DataBindings.Add("Value", repository, "RepositoryValue");
DataBindings["Value"].DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;

在某些情况下,用户更改了组合框中的选定项,它反映在repository.RepositoryValue中,有时我们从文件或数据库中提取数据并直接填充repository.RepositoryValue,然后自动反映在组合框中。有时,文件或数据库可能包含无效的值(someArray中没有包含的值),我们希望检测这种情况,并强制组合框选择列表中的第一个项目,或者完全拒绝更改。这是可能的吗?我们应该怎么做呢?

检测数据绑定源中的无效数据

可以使用Binding的Format event来处理。

Binding SelectedValueBinding = new Binding("SelectedValue", repository, "RepositoryValue", true, DataSourceUpdateMode.OnPropertyChanged);
SelectedValueBinding.Format += new ConvertEventHandler(SelectedValueBinding_Format);
myComboBox.DataBindings.Add(SelectedValueBinding);
void SelectedValueBinding_Format(object sender, ConvertEventArgs e)
{
        // if e.Value is Invalid
        // myComboBox.SelectedValue = "Default Value";
}

查看更多信息:

如何将自定义类型绑定到TextBox.Text?