Контейнеры TableLayoutPanel не принимают нужную форму

Я создаю два контейнера TableLayoutPanel - main_panel и top_panel. Планировалось, что main_panel будет главным контейнером окна и займет собой все доступное пространство, а top_panel, вложенный в main_panel, будет всегда находиться у верхней границы окна, иметь высоту 44px и занимать собой все свободной пространство по ширине (также растягиваться по горизонтали при масштабировании окна приложения). Мои ожидания приведены на рисунке ниже:

введите сюда описание изображения

Однако результат оказался совсем иным:

введите сюда описание изображения

Form1.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace winforms_test_1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            TableLayoutPanel main_panel = new TableLayoutPanel();
            main_panel.BackColor = ColorTranslator.FromHtml("#2a4fb7");

            TableLayoutPanel top_panel = new TableLayoutPanel();
            top_panel.BackColor = ColorTranslator.FromHtml("#4dade8");
            top_panel.Height = 44;

            Button button_1 = new Button
            {
                Text = "1",
            };
            Button button_2 = new Button
            {
                Text = "2",
            };
            Button button_3 = new Button
            {
                Text = "3",
            };
            top_panel.Controls.Add(button_1, 0, 0);
            top_panel.Controls.Add(button_2, 1, 0);
            top_panel.Controls.Add(button_3, 2, 0);

            main_panel.Controls.Add(top_panel, 0, 0);

            Controls.Add(main_panel);
        }
    }
}

Как можно изменить код, чтобы получить ожидаемый результат? Хотелось бы сделать это программно, без использования windows forms designer.


Ответы (1 шт):

Автор решения: Георгий

Если TableLayoutPanel не увеличивается в ширину попробуйте:

flowLayout = new FlowLayoutPanel[data.Count];
    
    
flowLayout[i] = new FlowLayoutPanel
{
    AutoSize = true,
    Dock = DockStyle.Top,
    FlowDirection = FlowDirection.LeftToRight,
    TabStop = false,
};
→ Ссылка