TableLayoutPanel行索引顺序从显示的内容是错误的?

问题描述 投票:0回答:1

第一次在这里提问。到目前为止,您一直是一个了不起的帮助,但是这个问题确实让我感到困惑!

在我的表单中,我具有以下结构:“图:1,我的表格布局面板”

[它包含1个具有3行的TableLayoutPanel(我将其称为rowLayoutPanel),每行包含另一个具有多个列的TableLayoutPanel(我将其称为columnLayoutPanels),每个列均包含一个GroupBox

我想在rowLayoutPanel的单行中获得columnLayoutPanel中GroupBox的列表

为此,我在此代码中使用了一个函数,为它提供了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的组框,如您从该图像中看到的:图2:使用索引1>

调用我的函数的结果

这是很奇怪的地方。我检查了函数中的columnLayoutPanels变量,发现索引与显示的内容不对应:[我在索引2中找到了我要查找的分组框,

同时,图1的索引2中显示的组框在列表的索引0中。

我在做什么错?更改rowindex的高度仍会更改正确索引的高度。

第一次在这里提问。到目前为止,您一直是一个了不起的帮助,但是这个问题确实让我感到困惑!在我的表单中,我具有以下结构:它由1个具有3行的TableLayoutPanel组成(...

c# windows-forms-designer
1个回答
0
投票

我使用来规避了整件事

    private List<GroupBox> GetGroupboxesFromRow(TableLayoutPanel rowLayoutPanel, int rowPanelRowIndex)
    {
        TableLayoutPanel columnLayoutPanel = (TableLayoutPanel)rowLayoutPanel.GetControlFromPosition(0, rowPanelRowIndex);
        List<GroupBox> groupBoxes = columnLayoutPanel.Controls.OfType<GroupBox>().ToList<GroupBox>();
        return groupBoxes;
    }
© www.soinside.com 2019 - 2024. All rights reserved.