Несколько TableLayoutPanels для сложной таблицы - PullRequest
1 голос
/ 20 августа 2010

Я пытаюсь построить макет таблицы, подобный этому

 ---------------------------------------------------------------------
|   01.01.2010 01:00   |   01.01.2010 01:00   |   01.01.2010 01:00    |
 ---------------------------------------------------------------------
|   Some text       |  More            | And         | Final text     |
|   (Multilined)    |  multilined      | more text   | Multiple lines,|
|                   |  text            |             | too            |
 ---------------------------------------------------------------------

Он должен быть создан динамически, поэтому я не могу создать его в конструкторе форм ...

Первый подход был следующим:

// The "outer" table - two rows (the dates and the texts)
TableLayoutPanel table = new TableLayoutPanel();
table.ColumnCount = 1;
table.RowCount = 2;

// Date table - three columns
TableLayoutPanel dateTable = new TableLayoutPanel();
dateTable.ColumnCount = 3;
dateTable.RowCount = 1;

// Text table - four columns
TableLayoutPanel textTable = new TableLayoutPanel();
textTable.ColumnCount = 4;
textTable.RowCount = 1;

// Add it all up and save it to the panel in the winform
table.Controls.Add(dateTable);
table.Controls.Add(textTable);
SomeUIPanel.Controls.Add(table);

Кажется, это работает, поскольку я не получаю никаких исключений - но выглядит ужасно. Ширина таблицы слишком мала, столбцы текста не добавляются так, как я описал выше, и у меня также возникает ощущение, что таблица слишком короткая по высоте, так как некоторые тексты обрезаются внизу.

Есть ли лучшие подходы к этому? Или полезные учебники по этим вопросам?

1 Ответ

2 голосов
/ 20 августа 2010

Я думаю, у вас правильная структура.То, что я не вижу, это ширина / высота / стыковка / закрепление.

Я бы добавил:

table.Dock = DockStyle.Fill;
dateTable.Dock = DockStyle.Top; 
textTable.Dock = DockStyle.Fill;
...