【问题标题】:C# Adding textboxes when tabs are createdC# 在创建选项卡时添加文本框
【发布时间】:2015-04-02 13:19:48
【问题描述】:

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

问题

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

我有什么

 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");
        }

【问题讨论】:

  • 那么什么不起作用?
  • 始终添加文本框,只是在选项卡不活动时使它们不可见!

标签: c# tabs inputbox


【解决方案1】:

Tab Selecting Event:这解释了选项卡选择事件,然后您可以使用它在正在选择的选项卡上动态生成所需的文本框。

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 事件

【讨论】:

    【解决方案2】:

    获取当前的 TabPage 并将文本框添加到该标签页。

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

    或在 1 个语句中:

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

    【讨论】:

      猜你喜欢
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多