【问题标题】:Arrange rectangular shapes sent to back or front排列发送到后面或前面的矩形形状
【发布时间】:2014-04-29 04:59:15
【问题描述】:

有没有办法安排RectangleShape 控件在VB.NET 中将它们发送到后面和前面。我需要更改它们的 Z 轴顺序,以便更改前面的矩形。这是我的表单的图像:

我想发送蓝色矩形后面的小矩形。我希望能够在运行时从代码中完成。

【问题讨论】:

  • 这是 WinForms 还是 WPF?您是如何创建布局的?
  • 这是 WinForms。没有布局。
  • 您想在代码运行时更改 z 顺序,还是只是在表单设计器中询问如何操作?
  • 是矩形控件吗?如果是这样,它们是什么类型的控制?如果没有,你是怎么画的?一些代码会很有帮助。
  • 我更新了您的问题以反映这些细节并投了赞成票。这实际上是一个很好的问题。我从来没有使用过那些 Power Packs 形状控件,所以我没有意识到它们表现得那么有趣。

标签: vb.net winforms rectangles powerpacks


【解决方案1】:

Visual Basic Power Packs Controls 库中的形状控件不会直接添加到表单的 Controls 集合中。相反,它们被添加到一个特殊的ShapeContainer 控件中。通常容器称为ShapeContainer1,但如果不是,您可以通过查看表单的.Designer.vb 文件找到它的名称。

所有形状都存储在ShapeContainer1.Shapes 集合中。为了更改形状的 Z 顺序,您需要更改该集合引用它们的顺序。换句话说,你需要改变他们的索引。索引 0 处的那个被认为是前面的那个。因此,要将形状发送到前面,您需要将其索引更改为 0,如下所示:

ShapeContainer1.Shapes.SetChildIndex(RectangleShape1, 0)
ShapeContainer1.Refresh()    

您需要在更改索引后调用Refresh 以强制立即重绘形状。

如果您确实想在设计时更改它们,由于无法通过设计器更改顺序,您必须手动更改表单的.Designer.vb 文件。例如,您可以在 InitializeComponents 方法中更改此行:

Me.ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {Me.RectangleShape2, Me.RectangleShape1})

到这里:

Me.ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {Me.RectangleShape1, Me.RectangleShape2})

【讨论】:

  • 感谢有关更改形状 z-index 的信息。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2019-02-26
相关资源
最近更新 更多