【发布时间】:2014-10-18 22:22:31
【问题描述】:
我有一个用户控件,其中包含多个绑定到 bindingSource 的文本框。 我想将该用户控件放到另一个窗体上,并将数据源传递给控件以供使用。
我已尝试将用户控件的 bindingSource 设为 public,并将其设置为表单上相同的 bindingSource,
List<Person> data = MyGetData(); // returns a list of people
this.formControl.bindingSource.DataSource = data; // where formControl is my user control containing bound text boxes.
在我的用户控件中,我有一个名为 textboxFirstName 的文本框和一个名为 bindingSource 的绑定源
使用设计器,我将 bindingSource.DataSource 设置为 Person,其中 Person 是我的域类之一。
我还使用设计器将 textboxFirstName.DataBindings.Text 设置为“bindingSource - FirstName”,方法是从 Person 属性列表中选择它。
没有错误信息,但是文本框没有显示数据。
[更新] 如果我创建以下过程并调用它,我可以让绑定工作。
public void SetBinding(BindingSource bs)
{
this.bindingSource = bs;
this.firstNameTextBox.DataBindings.Clear();
this.firstNameTextBox.DataBindings.Add(new Binding("Text", bs, "firstName"));
}
但是我想知道为什么单独设置绑定源是不够的。
请注意,在设计时我已将用户控件的 bindingSource DataSource 设置为 People。这使我能够从列表中选择文本框的 DataBindings.Text 属性。
【问题讨论】:
-
将相同的绑定源传递给它时会出现什么错误?
-
嗨@sparkysword 我更新了问题以显示没有错误消息,数据只是没有绑定。
-
@LarsTech 我更新了问题以表明我在设计时设置了 DataBindings.Text
-
Kirsten,我不认为将数据绑定的文本属性设置为特定字符串与执行 .add() 函数相同。在那个你实际上指向一个绑定源(bs),而不仅仅是一些随机(到 C#)字符集。
-
@sparkysword 我更新了问题以显示我使用的文本是在设计时选择的。这不是一些随机的字符集
标签: c# winforms data-binding