[英]C# - Windows Forms User Control with Sub controls and data binding
[英]Binding data to controls in a Repeating user control with c#/WinForms
我正在WinForms UI上工作,我們有一個需要動態添加重復控件的要求。 我設法用所有標簽和文本框創建了一個UserControl,並像這樣添加它們:
for (int i= 0; i < 4;i ++) {
tableLayoutPanel1.Controls.Add(new MyUserControl(),1,1);
//1,1 represent 1st row, 1st column of tablelayoutpanel
}
現在,我無法找到將不同數據綁定到每個控件的方法。 例如:每次添加新的用戶控件時,我需要在每個文本框中顯示不同的聯系信息。 但是由於其相同的UserControl,文本框和標簽具有相同的名稱,我不確定如何使用相同的UserControl綁定不同的數據。
我需要這樣的東西:我能夠重復添加控件,但不能綁定數據: 屏幕截圖
任何幫助將不勝感激。
將UserControl
添加到TableLayoutPanel
的示例
for (int nCount = 0; nCount < 2; nCount++)
{
CheckUserControl uc = new CheckUserControl();
//If required Assign Value to the control
uc.strValue = "Item " + nCount;
uc.strTag = nCount.ToString();
//You can pass the Column and Row value dynamically
tableLayoutPanel1.Controls.Add(uc, 1, 1);
}
現在,您可以使用“標記值”將數據綁定到適當的UserControl
如果要創建自定義用戶控件。 您可以為喜歡的人提供數據綁定功能。 您可以在構造函數中使用參數來傳遞數據:
public MyUserControl(MyData mydata):this()
{ ...
}
您可以提供一個屬性,以便以后設置所需的數據:
public class MyUserControl()
{
...
public MyData MyDataSource {get;set;}
}
您冷傳遞函數來收集數據:
public MyUserControl(func<MyData> mydata):this()
{
}
或某種服務來檢索數據:
public MyUserControl(IMyService myService):this()
{
Textbox1.Text = myService.GetImportantText();
}
如果MyData實現INotifyPropertyChanged(或任何自定義事件),您將能夠對數據更改做出反應並顯示它們。 我猜您知道需要創建多少個控件。 如果是,您還知道為什么以及需要提供哪些數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.