簡體   English   中英

如何從 C# 中動態創建的用戶控件中檢索數據

[英]How to retrieve data from dynamically created user control in C#

我有一個用戶控件,其中包含文本框和日期選擇器。 當窗體加載時,動態生成用戶控件並顯示在窗體中。 (EventComponent(用戶控件))。

截屏

我想在用戶單擊保存按鈕時獲取這些用戶控件值中的每一個。

public partial class InsertEventForm : Form
{
    private int numberOfEvent;

    public InsertEventForm(int numberOfEvent)
    {
        InitializeComponent();
        this.numberOfEvent = numberOfEvent;
    }

    private void InsertEventForm_Load(object sender, EventArgs e)
    {
        EventComponent[] eventComponents = new EventComponent[(int)this.numberOfEvent];
        int i = 0;

        Button backBTN = new Button();
        backBTN.Text = "Back";
        backBTN.Location = new Point(0, 10);
        backBTN.Size = new Size(50, 30);
        this.Controls.Add(backBTN);

    // generate user control dynamically here

        for ( i = 0; i < eventComponents.Length; i++)
        {
            eventComponents[i] = new EventComponent();
            System.Drawing.Point pLabel = new System.Drawing.Point(36, 50 + i * 280);
            eventComponents[i].Location = pLabel;
            eventComponents[i].Size = new System.Drawing.Size(358, 259);
            this.Controls.Add(eventComponents[i]);
        }

        Button saveBTN = new Button();
        saveBTN.Text = "Save";
        saveBTN.Location = new Point(200, 50 + i * 280);
        saveBTN.Size = new Size(100, 50);
        this.Controls.Add(saveBTN);
        saveBTN.MouseEnter += new System.EventHandler(this.SaveBTN_click);
    }

    private void SaveBTN_click(object sender, EventArgs e)
    {
        // need to retrieve value from user control
    }
}

選項1

創建List<EventComponent> EventComponentList

當你添加到this.Controls添加到列表中

this.Controls.Add(eventComponents[i]);
EventComponentList.Add(eventComponents[i]);

選項 2(不太推薦)

private void SaveBTN_click(object sender, EventArgs e)
{
    var list = this.Controls.OfType<EventComponent>().ToList();
}

如果切換到 MVVM,則必須創建模型Event ,並且每個字段都是該類的參數,稍后創建ObservableCollection ,每次單擊save按鈕創建對象時,該對象都會填充Event類型的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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