在验证 ComboBox 时,我试图检查 ComboBox 中的值是否在数据绑定到所述 ComboBox 的值列表中。
数据源是一个 BindingSource,而基础项的类型是 DataRowView。
所以我不知道如何将组合框的值与 DataSource 的 DataRowView 的“Person”字段进行比较
同样在有人建议将 DropDownStyle 设置为 DropDownList 之前,这不是这种情况的选择。
我试过的:
private void ddPerson_Validating(object sender, CancelEventArgs e)
{
ComboBox cmbo = sender as ComboBox;
if (!string.IsNullOrWhiteSpace(ddPerson.Text))
{
if (cmbo.Items.Contains(ddPerson.Text))
{
errorProvider1.SetError(cmbo, "");
}
else
{
errorProvider1.SetError(cmbo, "\"" + person.Text + "\" is not in the list of accepted values");
}
}
else
{
errorProvider1.SetError(cmbo, cmbo.DisplayMember + " is required");
}
}
我也试过
if (personBindingSource.Contains(ddPerson.Text))
我尝试的上述两种解决方案都不起作用,因为 personBindingSource 和 cmbo.Items 只是 DataRowView 对象的列表。
从这里https://stackoverflow.com/a/24126821/3490417 我试过
if (cmbo.Items.Cast<DataRowView>().Select(x => Convert.ToString(x["Person"]).Contains(ddPerson.Text))
这不会编译错误“无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'bool'
编辑:
我找到了另一种检查组合框的值是否在组合框的绑定源中的方法。虽然我最终使用了mm8 的解决方案,因为它更干净。
int found = personBindingSource.Find("Person", ddPerson.Text);
if (found < 0)
{ errorProvider1.SetError(cmbo, "\"" + person.Text + "\"
is not in the list of accepted values"); }
狐的传说
叮当猫咪
相关分类