У меня есть автопрокрутка TableLayoutPanel, к которой я динамически добавляю строки. Я хотел бы, чтобы высота каждой строки составляла 1/3 видимой области TableLayoutPanel, т. е. исходная высота панели до того, как она будет расширена при добавлении 4-й панели и автопрокрутки. Я мог бы просто вычислить высоту для строки охвата вручную и установить ее как абсолютную высоту, но размер TableLayoutPanel можно изменить. В этом случае я мог бы обработать событие изменения размера и пересчитать абсолютную высоту каждой строки, но мне интересно, есть ли лучший способ. Есть ли способ указать высоту строки в процентах от видимой области панели, или я должен просто выполнить ручной расчет, маршрут абсолютной высоты?
Высота TableLayoutPanel для автопрокрутки на основе процента видимой области
Ответы (2)
TableLayoutPanel.RowStyle.Percent
Высота строк интерпретируется как процент от высоты таблицы.
Если у вас есть таблица с двумя строками, каждая из которых занимает 50% панели, и вы хотите добавить третью, настроив все на 33%:
tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles[0].Height = 33F;
this.tableLayoutPanel1.RowStyles[1].Height = 33F;
this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 33F));
В итоге я реализовал то, что мне было нужно, в FlowLayoutPanel сверху вниз, привязав Top, Down, Left и Right, чтобы он изменялся в соответствии с формой. Первая подпанель добавляется к FlowLayoutPanel, и ее ширина чуть меньше ширины FLP. Каждой последующей подпанели присваивается стиль заливки Dock, так что ее ширина автоматически соответствует первой панели. Каждой панели назначается высота FLP.Height/3, и у меня есть обработчик события изменения размера FLP для пересчета высоты подпанелей по мере необходимости.
Спасибо всем, кто прокомментировал и ответил. Я голосую за ваши ответы, так как они будут полезны другим, просто не решили мою конкретную проблему.
Answered a similar question
- stackoverflow.com/a/11051278/763026. Код находится в репозитории github (см. комментарии к вопросам и ответам), чтобы поиграть с ним. - person Angshuman Agarwal   schedule 20.06.2012