Не работает параметр AutoSize для Rows в TableLayoutPanel
Есть TableLayoutPanel
в которую динамически добавляються элементы Button
. Хочу установить параметр AutoSize
для высоты каждой строки (Row
), однако параметр срабатывает только для первой из строк.
Код:
private void editEventsLoad(object sender, EventArgs e)
{
ea_tableLayoutPanel.RowCount = 0;
ea_tableLayoutPanel.RowStyles.Clear();
// получаем все обьекты event и добавляем кнопку для них в TableLayoutPanel
for (int i = 0; i < events.Length; i++)
{
EventObject _event = events[i];
ea_addButtonToEventList(
$"{_event.From.ToShortDateString()}, {_event.From.ToShortTimeString()} " +
$"{_event.To.ToShortDateString()}, {_event.To.ToShortTimeString()}" +
$" - " +
$"{_event.EventName}", i.ToString());
}
}
// Добавляем кнопку в список
private void ea_addButtonToEventList(string text, string IndexInTheEventsArray)
{
ea_tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.AutoSize));
ea_tableLayoutPanel.Controls.Add(ea_getButton(text, IndexInTheEventsArray), 0, ea_tableLayoutPanel.RowCount++);
}
// создаем кнопку с нужными параметрами
private Button ea_getButton(string text, string index)
{
Button button = new Button();
button.Text = text;
button.AutoSize = true;
button.MinimumSize = new Size(500, 50);
button.TextAlign = ContentAlignment.MiddleCenter;
button.Font = new Font("Bahnschrift Light", 12f, FontStyle.Regular);
button.Dock = DockStyle.Fill;
button.BackColor = Color.White;
button.Tag = index;
return button;
}
Далее пример с измененным текстом на кнопке (чтобы сделать кнопку больше чем минимум):
На первой кнопке видно полный текст, на остальных размер с параметра MinSize. Как я понимаю проблема не с размером кнопки, потому что с первой все работает.
Заранее спасибо за помощь.
Ответы (1 шт):
Проблема была в использовании Button
и тем что AutoSize
в этом элементе не увеличивает высоту кнопки. Поэтому при ограничении максимальной ширины он не переносит продолжение текста на следующие строки. Решением стало использование Label
внутри Button
, у которого AutoSize
работает в этом случае "корректнее". Так же было замечено что лучше использовать FlowLayoutPanel
для таких задач.