我正在尝试将Databind添加到我的自定义词典类中。在formLoad中,我可以绑定到Car.Desc,但我无法绑定到RatesCache.Desc。 它们都是公共字符串属性。
我错过了什么?
谢谢!
System.ArgumentException未处理 Message =“无法绑定到DataSource上的属性或列Desc。\ r \ nParameter name:dataMember” 来源= “System.Windows.Forms的” PARAMNAME = “数据成员”
public class RatesCache : Dictionary<int, Rate>
{
public string Desc { get; set; }
}
public class Car
{
public string Desc { get; set; }
}
static Car car = new Car();
static RatesCache rc = new RatesCache();
private void Form1_Load(object sender, EventArgs e)
{
rc.Desc = "hello too";
car.Desc = "Im a car";
textBox1.DataBindings.Add("Text", rc, "Desc");
}
答案 0 :(得分:2)
private void Form1_Load(object sender, EventArgs e)
{
rc.Desc = "hello too";
car.Desc = "Im a car";
textBox1.DataBindings.Add("Text", rc, "Desc");
textBox1.TextChanged .TextChanged += _textBox1_TextChanged;
}
private void _messagesReceviedLabel_TextChanged(object sender, EventArgs e)
{
_textBox1.Text = rc.Desc.ToString();
}
public class RatesCache : Dictionary<int, Rate>
{
public string Desc { get; set; }
public override string ToString()
{
return Desc;
}
}
答案 1 :(得分:1)
我的猜测是,因为你的类继承自Collection的一个Dictionary,它会抛出文本框的DataBinding。 Windows Forms有自己的方式处理数据绑定到不同的集合,然后直接绑定到类的属性。我知道,答案不是很多,但我认为没有办法解决问题。我的建议是要么不直接从Dictionary继承;而是保留一个内部字典,并根据需要公开方法。或者,不要直接对texbox进行数据绑定。相反,只要在您的RatesCache类中更改“Desc”属性,然后在表单中听取该事件,就会引发一个事件。如果更改,请更新文本框。