gpt4 book ai didi

C# IDataErrorInfo 和子属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:12 25 4
gpt4 key购买 nike

我有一个绑定(bind)到 winform 的对象,这个对象实现了 IDataErrorInfo。我有一个错误提供者。问题是当一个属性的一个属性发生变化时。

当我更改年龄时没有问题(即检查并正确显示/删除规则)。但是当我更改职位时,不会显示/删除错误(实际上 Title 属性不属于对象 person)。我该如何进行检查?

this.errorProvider1.DataSource = this.bindingSourcePerson;
bindingSourcePerson.DataSource = new Person();
textBoxAge.DataBindings.Add("Text", bindingSourcePerson, "Age");
textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson, "CurrentJob.Title");

public class Person : IDataErrorInfo
{
public double Age { get; set; }
private Job _job = new Job();
public Job CurrentJob { get { return _job; } set { _job = value; } }

public string this[string columnName]
{
get
{
_lastError = "";
switch (columnName)
{
case "Age":
case "CurrentJob.Title":
if (!string.IsNullOrEmpty(CurrentJob.Title) && Age < 16)
_lastError = "Invalid job.";
break;

default: _lastError = "";
break;

}
return _lastError;

}
}

private string _lastError = "";
public string Error
{
get { return _lastError; }
}

public class Job
{
public string Title { get; set; }
}

最佳答案

如果您将属性添加到您的 Person 类:

public String CurrentJobTitle { get { return _job.Title; } }

然后将 TextBoxJobTitle 绑定(bind)到 CurrentJobTitle:

textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson, "CurrentJobTitle");

或者,将 TextBoxJobTitle 绑定(bind)到 bindingSourcePerson.CurrentJob,如下所示:

textBoxJobTitle.DataBindings.Add("Text", bindingSourcePerson.CurrentJob, "Title");

会成功吗?

关于C# IDataErrorInfo 和子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1356436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com