DataBinding DateTimePicker 引发“DataBinding 无法在列表中找到适合所有绑定的行。”

问题描述 投票:0回答:1

我有一个简单的测试应用程序,它重现了我最近遇到的错误。基本上我有一个简单的 WinForm,带有数据绑定 TextBox 和 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”属性,问题就会消失。我不明白为什么会这样,因为“值”对于数据绑定是有效的。

data-binding datetimepicker
1个回答
0
投票

System.InvalidOperationException:“DataBinding 在列表中找不到适合所有绑定的行。”

通过将

formattingEnabled
设置为
true
解决了这个问题,如下所示:

// private readonly BindingSource _bdsMembers = new() { DataSource = typeof(Member) };

this.dtpBirthday.DataBindings.Add(new Binding("Value", _bdsMembers, "Birthday", true));
© www.soinside.com 2019 - 2024. All rights reserved.