Колонки менять строки/период программно (управления tablelayoutpanel)
У меня есть tablelayoutpanel. 2x2-2 колонки 2 строки.
например, я добавил кнопку button1 в 1 строке, втором столбце. button1 имеет свойство dock для заполнения. VS Designer позволяет установить свойства столбца / диапазона строк button1.
Мне нужна доступность для изменения свойства диапазона строк button1 программно, поэтому он может заполнить весь второй столбец (1 строка и вторая строка) и доступность, чтобы установить его обратно.
Как?
2 ответов
Как насчет этого кода?
private void button1_Click(object sender, EventArgs e)
{
var control = sender as Control;
if(control == null)
return;
if (1 == tableLayoutPanel1.GetRowSpan(control))
{
tableLayoutPanel1.SetRowSpan(control, 2);
}
else
{
tableLayoutPanel1.SetRowSpan(control, 1);
}
}
В то время как я нахожу текущий проголосовавший ответ вполне адекватным, он также кажется немного более беспорядочным, чем нужно. Необходимо добавить элементы управления в tableLayoutPanel перед установкой их свойств.
Visual Studio (2013 и, вероятно, другие версии) покажет эти свойства как часть элемента управления. Когда на самом деле, они являются частью tableLayoutPanel.
объяснение:
tableLayoutPanel.Controls.Add(**control**, x, y)
tableLayoutPanel.SetColumnSpan(**control**, '# of cols to span')
пример:
tableLayoutPanel1.Controls.Add(**button1**, 0, 0);
tableLayoutPanel1.SetColumnSpan(**button1**, 2);
tableLayoutPanel1.SetRowSpan(**button1**, 3);
результат: кнопка, которая "занимает" это пространство. (При условии, что он достаточно велик, чтобы покрыть площадь. Даже если он не "покрывает" пространство, он все равно "резервирует" его.)
O O X X X
O O X X X
O O X X X
X X X X X
X X X X X
установка диапазона больше, чем размер сетки будет.. : Не изменять размер сетки. Не обрезать / изменить число до размера сетки. Не бросайте ошибку при компиляции.
он будет действовать / выполнять, как если бы диапазон был установлен на текущий максимальный размер сетки (tableLayoutPanel). Это актуально, только если размер TLP / grid изменения.
если добавить два элемента управления два же расположение сетки программно, первый элемент управления в сетке сохраняет свое местоположение. Любой добавленный впоследствии элемент управления перемещается в следующий блок ячеек. Если добавлен "промежуток", он будет обрабатывать этот блок ячеек как используемый и продолжать поиск неиспользуемого блока ячеек.
Ex:метка1, метка2 и метка3 добавляются к 0,0.
- метка1 будет появляются в 0,0
- метка2: 0,1
- метка3: 0,2
Ex 2: ярлык 1 имеет пядь строки 2.
- метка1: 0,0
- метка2: переехал в 0,2
- метка3: 0,3
после того, как вы выбрали правильную точку сетки и пролеты, вы можете дополнительно оптимизировать макет с помощью док-станции и якоря свойства.