Проблема с интервалом TableLayoutPanel

Я добавляю метки в табличную панель из массива. Ярлыки не добавляют проблем, но между ними огромный разрыв. Я что-то неправильно закодировал? Это мой массив и добавление меток. Панель tablelayoutpanel добавляется из графического интерфейса и называется tablelayoutpanel1.

while (dr.Read())
{
labelsToAdd.Add(dr[0].ToString());
}
dr.Close();
foreach (string label in labelsToAdd)
{
Label lbl = new Label();
lbl.Name = "lbl_" + index;
lbl.Text = label;
lbl.AutoSize = true;
tableLayoutPanel1.Controls.Add(lbl, 0, rowIndex);
rowIndex++;
}

Таким образом, они будут добавлять вот так со всеми пробелами между ними.

label1





label2

Визуальный пример — введите здесь описание изображения


person Bob Goblin    schedule 11.11.2014    source источник
comment
Добавьте наглядный пример   -  person Shaharyar    schedule 11.11.2014
comment
Как вы добавляете строки в элемент управления TableLayoutPanel? Установлены ли строки для AutoSize?   -  person LarsTech    schedule 11.11.2014
comment
Их 1 строка и 2 столбца. Они были добавлены путем перетаскивания элемента управления из панели инструментов.   -  person Bob Goblin    schedule 11.11.2014
comment
Если есть только одна строка, то как вы добавляете несколько меток в каждую строку? Как вы добились того, чтобы количество строк в вашем ридере совпадало с количеством строк в вашем TableLayoutControl?   -  person LarsTech    schedule 11.11.2014
comment
@LarsTech Я использовал приведенный выше синтаксис, и он добавлял все элементы массива, просто с сумасшедшим интервалом. Я так понимаю, это не правильный способ сделать это?   -  person Bob Goblin    schedule 11.11.2014
comment
Все ряды такие? Или только первый ряд или два?   -  person LarsTech    schedule 11.11.2014
comment
@LarsTech так отображают только первые два. Остальные отображаются по желанию.   -  person Bob Goblin    schedule 11.11.2014
comment
Это старый вопрос, но я столкнулся с той же проблемой. Оказывается, если вы добавляете строки в TableLayoutPanel с помощью конструктора форм в Visual Studio, а затем удаляете эти строки с помощью конструктора (в моем случае для динамического построения таблицы), он удаляет все элементы управления, которые были в панели. , но оставляет все вызовы RowStyles.Add в классе конструктора. Их необходимо удалить вручную. Ответ ниже также исправил это, удалив все стили строк, добавленные дизайнером.   -  person Scott Gartner    schedule 21.02.2020


Ответы (2)


Из вашего комментария:

только 1-й два дисплея так. Остальные отображаются по желанию.

Итак, похоже, вы должны сначала очистить строки, так как ваш GrowStyle = AddRows:

tableLayoutPanel1.RowStyles.Clear();
foreach (string label in labelsToAdd)
{
  Label lbl = new Label();
  // etc...
person LarsTech    schedule 11.11.2014

Попробуйте установить высоту строки:

tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 30))
person MikeG    schedule 11.11.2014
comment
Не следую за вами... если я перейду к своему файлу Designer.cs и попытаюсь добавить this.tableLayoutPanel1.RowStyles.Height = 30, он скажет мне, что высота недействительна. - person Bob Goblin; 11.11.2014
comment
@ user2676140 Никогда не редактируйте файл конструктора, если в нем указано, что изменять его нельзя. - person LarsTech; 11.11.2014
comment
Как насчет Absolute SizeType ? - person MikeG; 11.11.2014
comment
@MikeG Я использую только одну строку. И выполнение SizeType.Absolute, 30 тоже не помогает. - person Bob Goblin; 11.11.2014