【问题标题】:how do I control the order of child controls when adding to my parent control?添加到父控件时如何控制子控件的顺序?
【发布时间】:2015-06-04 14:48:48
【问题描述】:

我有一个面板(称为 main_box),我在其中添加了大约 20 个面板。每个子面板都放置在其上方的正下方。当我调整表单大小时,子面板会改变大小(就像我想要的那样),但它们不会在父框内重新定位,所以我需要手动进行。

我正在尝试:

Dim vert_pos as integer = 0
For Each o As Object In main_box.Controls
    o.location = New Point(0, vert_pos)
    vert_pos += o.height
Next

但是子框的位置乱了。它们的出现顺序与我添加到父框时的顺序不同。

如何确保它们按顺序重新定位?

【问题讨论】:

  • 我们是否假设“main_box”是一个自动滚动面板?
  • FlowLayoutPanel 怎么样?
  • 是的,它是一个自动滚动面板
  • 流程布局面板能给我带来什么好处?
  • 首先打开Option Strict,控件集合包含控件而不是对象,并且“位置”不是对象的属性。要手动重新定位,您应该使用AutoScrollPosition X 或 Y,具体取决于它们是垂直滚动还是水平滚动

标签: vb.net panel


【解决方案1】:

我最终做的是创建一个数组;每次我向 main_box 添加一个子面板时,我也将它添加到数组中。然后我只是遍历数组而不是 main_box.controls 并且顺序保持正确。

【讨论】:

  • 为什么一票难求?这个解决方案有什么问题?它完美地工作。你不喜欢我自己找到答案吗?
猜你喜欢
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多