我有一个简单的测试应用程序,它重现了我最近遇到的错误。基本上我有一个简单的 WinForm,带有数据绑定的 TextBox 和 DateTimePicker 控件,以及一个按钮。当我执行下面的代码时(单击按钮),我收到错误“DataBinding 在列表中找不到适合所有绑定的行”。如果我将 DataSource 赋值移动到表单的构造函数中,我不会收到错误消息。
如果我删除 DateTimePicker 的数据绑定,它工作正常。
谁能解释问题是什么?
public partial class Form1 : Form
{
private BindingSource bs;
public Form1()
{
InitializeComponent();
button1.Click += new EventHandler(button1_Click);
bs = new BindingSource();
bs.DataSource = typeof(Thing);
this.textBox1.DataBindings.Add("Text", bs, "MyString");
this.dateTimePicker1.DataBindings.Add(new Binding("Value", bs, "MyDate"));
//Thing thing = new Thing { MyString = "Hello", MyNumber = 123, MyDate = DateTime.Parse("01-Jan-1970") };
//bs.DataSource = thing;
}
private void button1_Click(object sender, EventArgs e)
{
Thing thing = new Thing { MyString = "Hello", MyNumber = 123, MyDate = DateTime.Parse("01-Jan-1970") };
bs.DataSource = thing;
}
}
public partial class Thing
{
public String MyString { get; set; }
public Int32 MyNumber { get; set; }
public DateTime MyDate { get; set; }
}
}
谢谢
编辑:
似乎如果我更改 DateTimePicker 控件的数据绑定,以便绑定到“文本”属性,问题就会消失。我不明白为什么会这样,因为“值”对数据绑定有效。