Изменение диапазона строк/столбцов программно (tablelayoutpanel)
У меня есть tablelayoutpanel. 2x2 - 2 столбца 2 ряда.
Например, я добавил кнопку button1 в 1 строку, второй столбец. button1 имеет свойство док-станции, установленное для заполнения. VS Designer позволяет задавать свойства столбца/строки в кнопке 1.
Я хочу, чтобы доступность изменяла свойство span строки button1 programatically, поэтому он может заполнить все второй столбец (1 строку и вторую строку) и доступность, чтобы установить его обратно.
Как?
Ответы
Ответ 1
Как насчет этого кода?
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);
}
}
Ответ 2
В то время как я считаю, что текущий опрошенный ответ достаточно адекватен, он также выглядит немного более грязным, чем нужно. Перед установкой их свойств вы должны добавить элементы управления в таблицуLayoutPanel.
Visual Studio (2013 и, вероятно, другие версии) покажут эти свойства как часть элемента управления. Когда на самом деле они являются частью таблицыLayoutPanel.
Пояснение:
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/сетки.
Если вы программным образом добавите два элемента управления по одному и тому же месту сетки, первый элемент управления в сетке сохранит свое местоположение. Любой добавленный впоследствии элемент управления переходит к следующему блоку ячейки. Если добавлен "span", он будет рассматривать этот блок ячейки как использованный и продолжить поиск неиспользуемого блока ячейки.
Ex: label1, label2 и label3 добавляются к 0,0.
- label1 появится в 0,0
- label2: 0,1
- label3: 0,2
Пример 2: метка 1 имеет интервал строки 2.
- label1: 0,0
- label2: переместился на 0,2
- label3: 0,3
После того, как вы выбрали правильную точку сетки и интервалы, вы можете затем оптимизировать свой макет, используя свойства док-станции и привязки.