过去,我创建了数据绑定,如下所示:
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'”和“仅分配,调用,增量,减量和新对象表达式可以用作语句“
有没有办法实现这个目标?
答案 0 :(得分:3)
删除类型转换。这不是必需的,因为tb
已经强类型为TextBox
。无论如何,这里的铸造是错误的。
TextBox tb = (TextBox)this.Controls.Find("textBoxPlatypusName", true).First();
tb.DataBindings.Add(new Binding("Text", PlatypusInfo, "PlatypusName"));
例如,如果tb
被输入为object
或Control
,并且您需要将其转换为TextBox
,则需要第二组括号
((TextBox)control).SomePropertyOfTextBox = x;
否则,强制转换将应用于整个表达式。在您的情况下,C#希望将转换应用于Add
方法的结果,即void
并且无法进行转换。