簡體   English   中英

如何將信息保存在 TableLayoutPanel 中加載的子窗體的文本框中?

[英]How to keep information in textboxes of a child form that was loaded in TableLayoutPanel?

即使用戶打開另一個子表單,我也需要保留在文本框中輸入的信息,

例如:假設我們有 2 個表單要加載到 TableLayoutPanel 的同一個單元格中

  1. 用戶輸入了所需的信息,但他們出於任何原因單擊了一個按鈕以打開另一個表單。

2.當他們返回繼續時,表格是新的並且是空的,然后他們必須再次重新輸入所有信息。

如何避免這種情況,請查看我的代碼(是否需要出於相同目的進行任何修改)。

bool isChildAlready = false;
string childName = null;

private void button12_Click(object sender, EventArgs e)
        {
            frmEmp chld = new frmEmp();
            loadChild(chld);
        }
        private void loadChild(Form child)
        {
            if (isChildAlready)
            {
                if (child.Name != childName)
                {
                    this.tlbMain.Controls.RemoveAt(1);
                    child.TopLevel = false;
                    child.BackColor = this.tlbMain.BackColor;
                    child.Dock = DockStyle.Fill;
                    this.tlbMain.Controls.Add(child, 1, 0);
                    child.Show();
                    isChildAlready = true;
                    childName = child.Name;
                }
            }
            else
            {
                child.TopLevel = false;
                child.BackColor = this.tlbMain.BackColor;
                child.Dock = DockStyle.Fill;
                this.tlbMain.Controls.Add(child, 1, 0);
                child.Show();
                isChildAlready = true;
                childName = child.Name;
            }
        }

謝謝你。

使用以下代碼,您可以將無限Form添加到TableLayoutPanel

然后按clear button返回一個控件。

我使用了一個帶有靜態列表靜態類保存 Forms

添加表格

private void btnGetTaker_Click(object sender, EventArgs e)
{
   if (tableLayoutPanel1.Controls.Count > 0)
   {                  
        StoreData.Controls.Add(tableLayoutPanel1.GetControlFromPosition(1, 0));
        tableLayoutPanel1.Controls.RemoveAt(0);
   }
   frmEmp child = new frmEmp();
   child.TopLevel = false;
   tableLayoutPanel1.Controls.Add(child, 1,0);
   child.Show();
   child.FormClosing += T_FormClosing;
}
private void T_FormClosing(object sender, FormClosingEventArgs e)
{
     ComeBackForm();         
}

清除桌面布局面板

private void btnClear_Click(object sender, EventArgs e)
{
    ComeBackForm();
}

private void ComeBackForm()
{
   if (tableLayoutPanel1.Controls.Count > 0)
   {
       tableLayoutPanel1.Controls.RemoveAt(0);
       var child = StoreData.Controls.LastOrDefault();
       tableLayoutPanel1.Controls.Add(child);
        StoreData.Controls.Remove(child);
   }
}

StoreControl.cs

public static class StoreData
{
    public static List<Control> Controls { get; set; } = new List<Control>();
}

暫無
暫無

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

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