1

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

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' ”和“只有赋值、调用、递增、递减和新对象表达式可以用作语句

有没有办法做到这一点?

4

1 回答 1

3

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

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

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

((TextBox)control).SomePropertyOfTextBox = x;

否则,强制转换将应用于整个表达式。在您的情况下,C# 想要将强制转换应用于Add方法的结果,该结果是void并且不能被强制转换。

于 2012-08-15T16:56:52.550 回答