Добрый день!
У нас есть tableLayoutPanel, который используется для добавления комбо-ящиков и меток во время выполнения.
Когда пользователь нажимает кнопку, то, что делает наш код, это то, что он создает элементы управления во время выполнения, а затем добавляет его в контейнер tableLayoutPanel. Когда мы нажимаем кнопку "Добавить" один раз, мы должны увидеть одну ячейку, созданную так, как показано ниже
Теперь, когда мы добавляем несколько элементов управления, мы замечаем, что строка 0 накапливает большое пространство. Как мы это удалим?
обратите внимание, что программа 1 имеет большое пространство, но программа 2,3,4 имеет равномерное пространство.. Почему это так? благодаря
Вот наш код, когда пользователь нажимает кнопку "Добавить"
int cLeft = 1;
public System.Windows.Forms.ComboBox AddNewComboBox()
{
System.Windows.Forms.Label lab = new System.Windows.Forms.Label();
System.Windows.Forms.ComboBox com = new System.Windows.Forms.ComboBox();
tableLayoutPanel1.Controls.Add(lab,0,cLeft-1);
lab.Text = "Program " + cLeft.ToString() + ":";
lab.Name = "label" + cLeft.ToString();
tableLayoutPanel1.Controls.Add(com,1,cLeft-1);
com.Width = 220;
com.Name = "comboBox " + cLeft.ToString();
cLeft = cLeft + 1;
return com;
}
Однажды я столкнулся с подобной проблемой. Я думаю, проблема в том, что первая строка, которую вы вставляете, имеет авторазмер. Если вы добавите пустую строку в начале, которая будет автоматически задана, и все элементы управления впоследствии будут иметь фиксированный размер, он должен работать.
В качестве альтернативы вы можете создать собственный UserControl, в котором вы поместите свой ярлык и combobox, и добавьте его с maxheight на панель tablelayout.