簡體   English   中英

使用c#/ WinForms將數據綁定到重復用戶控件中的控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM