如何对动态创建的控件进行数据绑定?

时间:2012-08-15 16:48:46

标签: c# winforms data-binding dynamic

过去,我创建了数据绑定,如下所示:

textBoxPlatypusName.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

...但是使用动态创建的控件,这是不可能的(编译器在编译时无法识别“textBoxPlatypusName”)。

试试这个:

TextBox tb = (TextBox)this.Controls.Find("textBoxPlatypusName", true).First();
(TextBox)tb.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

...给我,“无法将类型'void'转换为'System.Windows.Forms.TextBox'”和“仅分配,调用,增量,减量和新对象表达式可以用作语句

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

删除类型转换。这不是必需的,因为tb已经强类型为TextBox。无论如何,这里的铸造是错误的。

TextBox tb = (TextBox)this.Controls.Find("textBoxPlatypusName", true).First();
tb.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));

例如,如果tb被输入为objectControl,并且您需要将其转换为TextBox,则需要第二组括号

((TextBox)control).SomePropertyOfTextBox = x;

否则,强制转换将应用于整个表达式。在您的情况下,C#希望将转换应用于Add方法的结果,即void并且无法进行转换。