通过用户命令将tabPage添加到tabControl

时间:2014-10-11 14:05:56

标签: c#

我是c#的新手,可能会问一个非常简单的问题,但是我无法在网上找到任何帮助。

我有一个带有TabPage的tabControl,它包含一个TextBox对象;此事件,当事件"文字改变"被调用,将执行父tabPage的名称的更改。

enter image description here

我输入的文本框"我改变了文字"有一个管理更改tabPage名称的方法:

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (this.textBox1.Text != "")
                this.tabControl2.SelectedTab.Text = this.textBox1.Text;
            else
                this.tabControl2.SelectedTab.Text = "(no name)";
        }

进入当前页面菜单包含一个控件来添加一个新页面,当用户点击它时会运行这个方法:

private void addNewPageToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int numPagine;
            string strPagine;
            numPagine = this.tabControl2.TabCount;
            strPagine = numPagine.ToString();
            this.tabControl2.TabPages.Add("new page" + strPagine);
        }

...这是输出,这是预期的,因为我只想要添加一个新的空tabPage:

enter image description here

所以,我的问题是:当用户点击"添加新页面"时,如何创建一个空的新tabPage,而不是创建一个像第一个一样的页面(即包含一个文本框到同一个位置,它有一个方法来改变我刚刚创建的父标签页的文本?

1 个答案:

答案 0 :(得分:0)

这是一个例子。

    //..
    // create the new page
    TabPage tpNew = new TabPage("new page..");
    // add it to the tab
    this.tabControl2.TabPages.Add(tpNew);
    // create one labe with text and location like label1
    Label lbl = new Label();
    lbl.Text = label1.Text;
    lbl.Location = label1.Location;
    // create a new textbox..
    TextBox tbx = new TextBox();
    tbx.Location = textBox1.Location;
    tpNew.Controls.Add(lbl);
    tpNew.Controls.Add(tbx); 
    // add code to the new textbox via lambda code:      
    tbx.TextChanged += ( (sender2, evArgs) =>
    {
        if (tbx.Text != "")
            this.tabControl2.SelectedTab.Text = tbx.Text;
        else
            this.tabControl2.SelectedTab.Text = "(no name)";
    } );

对于更复杂的布局,您可能需要考虑创建用户控件。 您还可能想要使用此代码创建第一页;当然还有文字和职位的真实价值!

要创建UserControl,请转到项目标记,然后右键单击Add-UserControl-UserControl并将其命名,也许是myTagPageUC。然后你可以在表格上做布局。一个相当不错的例子是here on MSDN

问题是与表单无关,这意味着您必须编写各种引用以使其正常工作。

我不确定你是否可能不会更好地编写一个完整的clonePage方法。它可以像上面的代码一样工作,但会遍历模板页面的控件并检查各种类型以添加​​正确的控件..

这实际上取决于更复杂的内容:布局或页面与表单及其他控件之间的联系..