C# 在创建选项卡时添加文本框

C# Adding textboxes when tabs are created

我的表单上有一个选项卡控件。我通过用户输入(使用 Visual Basic 库)提示用户 header 有多少个口袋。文本框中的数字生成那么多的选项卡。

问题

如何在生成新标签时添加文本框?由于在我告诉之前该数字是未知的,因此仅向设计器添加文本框是没有意义的。

我有什么

 private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            string input = Microsoft.VisualBasic.Interaction.InputBox("How many pockets does the header have?", "Pocket Count", "",-1,-1);
            for (int i = 1; i < Convert.ToInt32(input) + 1; i++)
            {
                tabControl1.TabPages.Add("Pocket" + i);
                TextBox txt = new TextBox();
                txt.Name = tabControl1.Name;


            }
            tabControl1.TabPages.Add("Next");
        }

Tab Selecting Event:这里解释了Tab Selecting Event,你可以使用它在被选中的tab上动态生成你需要的文本框。

How to dynamically add a textbox:这解释了如何在运行时添加控件,甚至提供了一个文本框示例。

如果将这两篇文章放在一起,您可能会得到类似下面的内容,尽管您肯定希望根据您的特定应用程序对其进行调整

private void TabControl1_Selecting(Object sender, TabControlCancelEventArgs e) 
{

    TextBox dynamictextbox = new TextBox();
    dynamictextbox.Text = "(Enter some text)";
    dynamictextbox.ID = "dynamictextbox";
    (TabControl)sender.controls.Add(dynamictextbox)
}

}

这并不是一个完整的示例,而是为了说明它的工作原理。在您的情况下,您必须在代码中为每个动态选项卡连接 Selecting 事件

获取当前TabPage并将文本框添加到tabpage。

TabPage current = tabControl1.TabPages[i-1];
current.Controls.Add(txt);

或在 1 个语句中:

tabControl1.TabPages[i-1].Controls.Add(txt);