Как объединить две ячейки в Table Layout - PullRequest
24 голосов
/ 22 февраля 2012

У меня есть две строки и два столбца. Я хочу, чтобы последний столбец обеих ячеек слился в одну. В связи с требованием, я не использую другие параметры дизайна, означает две таблицы, в которых первая таблица имеет две строки. Я использую Winforms в C #.

|                       |                    |
|                       |                    |
|                       |                    |
|_______________________|                    |
|                       |                    |
|                       |                    |
|                       |                    |

Ответы [ 8 ]

30 голосов
/ 31 марта 2016
  1. Поместите любой элемент управления в ячейку в конструкторе форм
  2. Выберите элемент управления и просмотрите его свойства
  3. Найти свойство "ColumnSpan" в разделе "Макет"
  4. Введите желаемый интервал столбца для этого значения

См. Рисунок для иллюстрации:

enter image description here

6 голосов
/ 20 марта 2014

Вот как это сделать в коде

//create a label control, add it to the tableLayoutPanel, and merge it into 3 cells.
Label lbl = new Label();
lbl.Location = new Point(0, 0);
lbl.Text = "This is a test label";
MyTableLayoutPanel.Controls.Add(lbl, 0,0);  //start it in cell 0,0
MyTableLayoutPanel.SetColumnSpan(lbl, 3);  //merge 3 columns
5 голосов
/ 22 февраля 2012

http://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx

Например, вы можете установить RowSpan poperty в элементе управления TableLayoutPanel.

2 голосов
/ 22 февраля 2012

Вы можете посмотреть здесь название Объединяющихся Ячеек.

http://en.csharp -online.net / TableLayoutPanel

1 голос
/ 02 мая 2014

Вместо установки свойства ColumnSpan / RowSpan вы можете добавить TableLayoutPanel в ячейку другого TableLayoutPanel .Вместо объединения двух ячеек вы разделяете две ячейки.В примере, который вы приводите в своем вопросе, вы бы разбили левый столбец на две строки вместо объединения правого столбца в одну строку.

Этот метод выгоден только в том случае, если вы планируете установить CellBorderStyle свойство, отличное от " None ".Я нашел этот ответ здесь , где CSharpFreak также предлагает другой метод, который я не пробовал.

0 голосов
/ 25 февраля 2015

Следующий код должен позволить вам распределить элемент управления по желаемому количеству строк / столбцов

TableLayoutPanel tableLayoutPanel1 = new TableLayoutPanel(); // not required if you already have the control added else where or in designer. 
TextBox textBox1 = new TextBox(); // not required if you already have the control added else where or in designer. 
tableLayoutPanel1.Controls.Add(textBox1);// not required if you already have the control added else where or in designer. 
tableLayoutPanel1.SetColumnSpan(textBox1, 2);
tableLayoutPanel1.SetRowSpan(textBox1, 2);
0 голосов
/ 25 сентября 2014

Вы можете установить такое свойство «слияние» для элемента управления:

Допустим, элемент управления является Label и вы хотите объединить строки, тогда вы можете сделать это следующим образом:

TableLayoutPanel table = new TableLayoutPanel();

Label lbl = new Label();
lbl.Text = "test";
lbl.Dock = DockStyle.Fill;

table.Controls.Add(lbl, 0, 0); //initial position
table.SetRowSpan(lbl,2);
0 голосов
/ 11 декабря 2013

Установите свойство RowSpan элемента управления в ячейке, которая начнет слияние в таблице.т.е. RowSpan из 3 будет иметь элемент управления заполнить свою ячейку и 2 ячейки ниже.

ColumnSpan для слияния вправо.

В коде вызовите метод SetRowSpan и / или SetColumnSpan.

...