Как мне создать TabControl и заполнить его TabPages программно за циклом в C #? - PullRequest
0 голосов
/ 07 мая 2019

Я новичок в C #, я хочу создать иерархический TabControl by loop, где TabControl1 содержит TabPages A1 и A2, а затем в A1 создайте TabControl2, где TabControl2 содержит B1 и B2, и где 1,2,3 указывают индекс цикла.Я хотел бы ожидать что-то вроде этого изображения ниже.

образец изображения 1

образец изображения 1

private void button1_Click(object sender, EventArgs e)
    {
        int g = 0;
        int h = 4;

        while (g < h) 
        {
            g++;
            var parentTabControl = new TabControl { Dock = DockStyle.Fill };
            parentTabControl.TabPages.Add("A" + g.ToString());
            var page = parentTabControl.TabPages[0]; 
            var childTabControl = new TabControl { Dock = DockStyle.Fill };
            childTabControl.TabPages.Add("B" + g.ToString());
            page.Controls.Add(childTabControl);
            this.Controls.Add(parentTabControl);
        }

    }

но яполучил

Вывод

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 мая 2019

здесь ваша функция

private void button1_Click(object sender, EventArgs e)
    {
        int g = 0;
        int h = 3;
        var parentTabControl = new TabControl { Dock = DockStyle.Fill };
        while (g < h) 
        {
            g++;
            parentTabControl.TabPages.Add("A" + g.ToString());
            var page = parentTabControl.TabPages[g-1]; 
            var childTabControl = new TabControl { Dock = DockStyle.Fill };
            childTabControl.TabPages.Add("B" + g.ToString());
            page.Controls.Add(childTabControl);
        }
        this.Controls.Add(parentTabControl);
    }

вам нужно было вынуть из цикла родительский элемент.Вы создали 4 родителей, которые были прикрывать друг друга.а также, если вы хотите 3, вам нужно изменить h на 3. возможно, даже лучше изменить этот цикл на цикл for.

...