Как объединить две ячейки в макете таблицы

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

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

Ответы

Ответ 2

  • Поместите любой элемент управления в ячейку в конструкторе форм
  • Выберите элемент управления и просмотрите его свойства
  • Найдите свойство "ColumnSpan" в разделе "Макет"
  • Введите требуемый диапазон столбцов для этого значения

Смотрите изображение для иллюстрации:

введите описание изображения здесь

Ответ 3

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

//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

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

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

Ответ 6

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

ColumnSpan, чтобы слиться вправо.

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

Ответ 7

Вы можете установить такое свойство "слияния" в "Управление":

Скажем, элемент управления 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);

Ответ 8

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

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);