动态添加带有控件的TabPages?

时间:2013-11-19 14:40:26

标签: c# winforms .net-4.0

我正在尝试添加一个TabPage,并在其中添加一个Textbox。 问题是如果我有更多的TabPages,TextBox的内容总是最后添加的而不是选中的TabPage。

enter image description here

编辑3 //

public partial class Form1 : Form
{
    int tabcount = 0;
    TextBox TextE;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // Create a new textbox to add to each control
        TextE = new TextBox();

        // Fill the tabpage 
       TextE.Dock = DockStyle.Fill;
       TextE.Multiline = true;

         // Create new tab page and increment the text of it 
        TabPage tab = new TabPage();
        tab.Text = "Tab" + tabcount.ToString();

        // Add Textbox to the tab
        tab.Controls.Add(TextE);

        // Add tabpage to tabcontrol
        tabControl1.Controls.Add(tab);
        tabcount++;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // Text content to messagebox...

        MessageBox.Show(TextE.Text);
    }


}

1 个答案:

答案 0 :(得分:1)

尝试使用数字索引(“Tab01”,“Tab02”等)命名选项卡,然后将当前选项卡转换为Scintilla TextEditor。不要被对象名称和Name属性搞糊涂。 controls集合使用name属性作为索引键。因此,即使您使用相同的名称声明了对象,只要name属性不同,您就可以添加它们。

例如

    Scintilla NewTextEditor = new Scintilla();
    NewTextEditor.Name = "tab" + (this.Controls.OfType<Scintilla>.Count + 1).ToString("00");
    this.Controls.Add(NewTextEditor);

这将添加一个新的控件更改name属性,以便可以添加它。

然后假设您有办法确定当前标签

Scintilla TextEditor = CurrentTab;