Контейнеры 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,
};

