Data binding 数据绑定DateTimePicker会引发;数据绑定无法在列表中找到适合所有绑定的行。”;

Data binding 数据绑定DateTimePicker会引发;数据绑定无法在列表中找到适合所有绑定的行。”;,data-binding,datetimepicker,Data Binding,Datetimepicker,我有一个简单的测试应用程序,它再现了我最近遇到的一个错误。基本上我有一个简单的WinForm,带有数据绑定文本框和DateTimePicker控件,还有一个按钮。当我执行下面的代码(单击按钮)时,我得到错误“DataBinding无法在列表中找到适合所有绑定的行”。如果将数据源分配移动到表单的构造函数中,则不会出现错误 如果我删除DateTimePicker的数据绑定,它可以正常工作 有人能解释问题出在哪里吗 public partial class Form1 : Form { priv

我有一个简单的测试应用程序,它再现了我最近遇到的一个错误。基本上我有一个简单的WinForm,带有数据绑定文本框和DateTimePicker控件,还有一个按钮。当我执行下面的代码(单击按钮)时,我得到错误“DataBinding无法在列表中找到适合所有绑定的行”。如果将数据源分配移动到表单的构造函数中,则不会出现错误

如果我删除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控件的数据绑定,以便绑定到“Text”属性,问题就会消失。我不明白为什么会这样,因为“值”对于数据绑定是有效的。

您应该添加您的编辑作为答案,如果它解决了您的问题,您应该接受它。但它没有解决问题。这是一个“变通办法”,碰巧得到了预期的结果,但没有解释问题是什么,也没有解释如何解决问题(与“避免”相反)。如果这是一个变通办法,你应该将其添加为答案。然后,人们会立即发现有一种方法可能对他们的情况有所帮助(并且您可以赢得更多的选票)。要诊断此问题,您可能会找到成功的方法,如果您将
formattingEnabled
设置为
true
,然后订阅它的
BindingComplete
事件。
bindingCompleteEventTargets.ErrorText
将为您提供更有用的错误描述。