2012-08-15 63 views
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")); 

...給我, 「無法將類型 '無效' 到 'System.Windows.Forms.TextBox'」 和「只有分配,來電,增量,遞減,並且新的對象表達式可以用作語句

有沒有辦法做到這一點?

回答

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,並且不能被鑄造。