Data binding 数据绑定DateTimePicker会引发;数据绑定无法在列表中找到适合所有绑定的行。”;
我有一个简单的测试应用程序,它再现了我最近遇到的一个错误。基本上我有一个简单的WinForm,带有数据绑定文本框和DateTimePicker控件,还有一个按钮。当我执行下面的代码(单击按钮)时,我得到错误“DataBinding无法在列表中找到适合所有绑定的行”。如果将数据源分配移动到表单的构造函数中,则不会出现错误 如果我删除DateTimePicker的数据绑定,它可以正常工作 有人能解释问题出在哪里吗Data binding 数据绑定DateTimePicker会引发;数据绑定无法在列表中找到适合所有绑定的行。”;,data-binding,datetimepicker,Data Binding,Datetimepicker,我有一个简单的测试应用程序,它再现了我最近遇到的一个错误。基本上我有一个简单的WinForm,带有数据绑定文本框和DateTimePicker控件,还有一个按钮。当我执行下面的代码(单击按钮)时,我得到错误“DataBinding无法在列表中找到适合所有绑定的行”。如果将数据源分配移动到表单的构造函数中,则不会出现错误 如果我删除DateTimePicker的数据绑定,它可以正常工作 有人能解释问题出在哪里吗 public partial class Form1 : Form { priv
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控件的数据绑定,以便绑定到“Text”属性,问题就会消失。我不明白为什么会这样,因为“值”对于数据绑定是有效的。您应该添加您的编辑作为答案,如果它解决了您的问题,您应该接受它。但它没有解决问题。这是一个“变通办法”,碰巧得到了预期的结果,但没有解释问题是什么,也没有解释如何解决问题(与“避免”相反)。如果这是一个变通办法,你应该将其添加为答案。然后,人们会立即发现有一种方法可能对他们的情况有所帮助(并且您可以赢得更多的选票)。要诊断此问题,您可能会找到成功的方法,如果您将
formattingEnabled
设置为true
,然后订阅它的BindingComplete
事件。bindingCompleteEventTargets.ErrorText
将为您提供更有用的错误描述。