2012-02-22 2 views
16

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

|      |     | 
|      |     | 
|      |     | 
|_______________________|     | 
|      |     | 
|      |     | 
|      |     | 
+0

Какой стол (класс) вы используете? –

+0

Вы использовали теги C#. Связаны с C#? Я не мог понять. Где вы хотите это сделать? – sinanakyazici

+1

Я хочу создать пользовательский интерфейс, в котором я использую TableLayout в Winforms –

ответ

0

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

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

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

6

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

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

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

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

0

Вы можете установить такое «объединение» собственность к контролю:

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

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

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); 
13
  1. Поместите любой элемент управления в клетку в виде конструктора
  2. Выберите элемент управления и просмотреть его свойство
  3. Найти недвижимость «ColumnSpan» в «Layout» раздел
  4. Введите требуемый интервал столбцов для этого значения

См картина для иллюстрации:

enter image description here