Впервые задаю вопрос здесь.До сих пор вы оказали потрясающую помощь, но эта проблема действительно поставила меня в тупик!
В моей форме у меня есть такая структура:
Она состоит из 1 TableLayoutPanel с 3 рядами (Я называю это rowLayoutPanel), каждая строка содержит другой TableLayoutPanel с несколькими столбцами (я называю их columnLayoutPanels), каждый из которых содержит один GroupBox
. Я хочу получить список GroupBoxes в columnLayoutPanelв одной строке rowLayoutPanel
Для этого я использую функцию a с этим кодом, предоставляя ей rowLayoutPanel и целое число 'rowPanelRowIndex', которое содержит индекс нужной строки в rowLayoutPanel
private List<GroupBox> GetGroupboxesFromRow(TableLayoutPanel rowLayoutPanel, int rowPanelRowIndex)
{
List<TableLayoutPanel> columnLayoutPanels = rowLayoutPanel.Controls.OfType<TableLayoutPanel>().ToList<TableLayoutPanel>();
List<GroupBox> groupBoxes = columnLayoutPanels[rowPanelRowIndex].Controls.OfType<GroupBox>().ToList<GroupBox>();
return groupBoxes;
}
В этом случае мне нужна средняя строка, поэтому я вызываю функцию следующим образом:
List<GroupBox> groupBoxes = GetGroupboxesFromRow(theLayoutPanelInFigure1, 1);
Но список, который я получаю, содержит не групповые блоки из индекса 1, а из индекса 0,как вы можете видеть из этого изображения:
Вот где это становится странным.Я проверяю переменную columnLayoutPanels из функции и обнаруживаю, что индексы не соответствуют тому, что показано:
Я нахожу группы, которые я ищу, в индексе 2:
Между тем, групповые блоки, показанные в индексе 2 на рисунке 1, находятся в индексе 0 списка.
Что я делаю не так?Изменение высоты индекса строки все еще меняет правильную высоту индекса.