Visual Studio 中的基本 Winforms 数据绑定(设计器模式)

Basic Winforms Databinding in Visual Studio (designer mode)

我似乎无法让基本的数据绑定在 WinForms 设计器中工作。 (使用 VS2012)

  1. 我创建了一个名为 DatabindTest.
  2. 的新 Win Forms 应用程序项目
  3. 我在这个项目中添加了一个名为 Class1.cs.
  4. 的 class
  5. 在这个 class 中,我创建了一个名为 MyProperty 的 (String) 属性 以及一个将 MyProperty 设置为 "abc" 的构造函数。
  6. 我构建解决方案。
  7. 使用 Form1 设计器,我向表单添加了一个文本框 (textBox1)。
  8. textBox1 的属性中,我展开 DataBindings 并打开“高级”对话框。
  9. 我展开绑定下拉列表,然后单击 添加项目数据源...,然后 select 对象 数据源.然后我展开 DatabindTest 节点和 select Class1 作为数据对象。
  10. 我确认 Binding 字段现在显示 "class1BindingSource - MyProperty"(如预期)。
  11. Form1.cs Form1 class 的开头,我创建了一个新的 Class1 实例(见下面的代码)。
  12. 此时,我构建并启动程序。我希望在文本框中看到 "abc",但它是空的。

我做错了什么?

public partial class Form1 : Form
{
    Class1 c1 = new Class1();
    public Form1()
    {
        InitializeComponent();
        //this.textBox1.Text = c1.MyProperty;   //if I uncomment this line, 
                                                //"abc" appears in textBox1
                                                //so why not through databinding?
    }
}

您应该设置 class1BindingSourceDataSource:

class1BindingSource.ِDataSource = c1;

如果您查看设计器为您的文本框和数据绑定生成的代码,您将看到如下代码:

this.textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text",
                               this.class1BindingSource, "MyProperty", true));

如你所见,class1BindingSource是数据绑定的数据源,你应该将数据传递给它的DataSource,以显示在Text 属性的textBox1.