Как уменьшить высоту и ширину определенного ряда панели внутри tablelayoutpanel?

я использую один

tablelayoutpanel

в котором я добавил одну панель. Теперь я хочу получить эту панель во время выполнения и хочу уменьшить ширину панели наполовину, а затем добавить еще одну панель того же размера.

Проще говоря, я хочу сделать два квадрата панели внутри этой строки tablelayoutpanel.

№ столбца = 1, № строк = 2

Need : Add multiple controls with same size inside any row of the 
tablelayoutpanel.

person Community    schedule 18.06.2015    source источник


Ответы (1)


Очень просто использовать TableLayoutPanel при запуске -time (также называется в коде). В основном повторяя msdn (надеюсь, более простыми словами):

  • используйте ColumnCount/ColumnStyles и RowCount/RowStyles для настройки самого TableLayoutPanel (как вы это делаете в дизайнере форм);
  • используйте методы SetColumn(control, column) и SetRow(control, row), чтобы поместить некоторые существующие control в определенную ячейку;
  • используйте методы GetColumn/GetRow, чтобы проверить, где находится какой-либо элемент управления;
  • используйте метод GetControlFromPosition(column, row), чтобы узнать, какой элемент управления находится в заданной ячейке.

Не стесняйтесь задавать вопросы в комментариях, если что-то не понятно, чтобы мы могли разобраться.

person Sinatr    schedule 18.06.2015
comment
На самом деле я хочу добавить несколько панелей внутри одного tablelayoutPanel с одинаковой высотой и шириной. Вы можете думать о шахматной доске как о структуре. - person ; 18.06.2015
comment
Шахматная доска? Вы можете установить 8 строк и 8 столбцов (для каждой строки/столбца добавить новый стиль с SizeType.Percent и тем же значением) -> это заставит TableLayoutPanel автоматически изменять размер всех ячеек одинаково. Затем для каждой ячейки создайте Panel с Dock=DockStyle.Fill. Если потом изменить внешний вид каждой четной панели -› получится шахматная доска. - person Sinatr; 18.06.2015
comment
Еще одна вещь, как я могу добавить несколько столбцов только в одну строку? - person ; 18.06.2015
comment
я имею в виду, что если rowIndex = 2, то столбец должен быть разделен на две равные части только в этой конкретной строке? - person ; 18.06.2015
comment
Магия равных частей достигается за счет SizeType.Percent и стыковки. Если все столбцы/строки имеют стиль Percent и одинаковое значение - каждая ячейка с/высотой будет одинаковой. Используя DockSyle.Fill, вы указываете элементу управления занимать точный размер ячейки. Если вы хотите иметь разное количество столбцов в определенной строке, то это обычно делается следующим образом: ColumnCount устанавливается на наибольшее число, а в этой строке для некоторых ячеек установлено ColumnSpan (означает, какой элемент занимает более одного столбца). - person Sinatr; 18.06.2015
comment
У вас есть какой-нибудь живой пример или какое-либо демо, пожалуйста, сообщите. - person ; 18.06.2015