C# - tablelayoutpanels中的嵌套用户控件(大小调整问题)

时间:2017-07-19 07:26:45

标签: c# winforms user-controls nested tablelayoutpanel

嗯,有点难以向我解释,但这是一个图形:

enter image description here

我在表单中绑定了三个用户控件。它们中的每一个都具有或多或少相同的结构:一组数据在标题中描述,由splitcontainer(由红线显示)和tablelayoutpanel分隔,默认为一行。

在tablelayoutpanel中应该是其他控件,三个类(标本,块和过程)中的每一个都具有底层类的子属性。 一个样本可以有一个或多个块,可以有一个或多个过程。 它是典型的树木结构或这些俄罗斯俄罗斯套娃之一。 我只需要在那里准确填充所有控件。

我检索的数据保存在数据库服务器上,用户输入一些数字,作为回报,程序获取一组数据,并提供构建其树的信息。

嗯,逻辑并不难写,不管我检索的结构有多复杂,困扰我的是显示控件。

用户控件最初的大小是固定的,但它们应该动态更改,检索的数据越多。我想到了这样的事情。

伪码:

for each Specimen in SpecimenList 
{
    PopulateSpecimen()

    for each Block in SpecimenList[i].Child
    {
        //adding new row to tablelayoutpanel of specimen
        PopulateBlock()
        //size.height of specimen control += 20

        for each Procedure in SpecimenList[i].Child[ii].Child
        {
           //adding new row to tablelayoutpanel of block
           PopulateProcedure()
           //size.height of specimen control += 10
           //size.height of block control += 10
        }
    }
}

当然这是我实际文件的简化伪代码版本。但我希望你能做到我正在做的事情。

现在我的问题是:如果我更改我的样本控件的高度,所有基础用户控件也会发生变化。其中的所有内容都会缩放,但这不是我的意图,我需要在将任何新块添加到样本控件之后为样本控件动态生成新空间,我还需要为每个添加的过程生成Block AND Specimen控件的空间

我使用以下命令在C#中执行此操作: spec.Size = new Size(spec.Size.Width, spec.Size.Height + offset);

所以我想让我的标本控制器在高度上变长,但是没有tablelayoutpanels /其他控制器在增长。

我会忘记必要的东西吗?是否有一种有用的方法可以完成我尝试做的事情?我有很多可视化的案例。 如果有人可以向我推荐一个舒适的解决方案,我将不胜感激。

我希望我可以理解我的关注。

0 个答案:

没有答案