【问题标题】:vb.net layering of controls not working properlyvb.net 分层控件无法正常工作
【发布时间】:2013-06-21 14:39:17
【问题描述】:

我只是想在我的表单中添加三个控件。前两个出现,但第三个没有。我不明白为什么会发生这种行为。我曾尝试使用 .bringToFront(),但最终得到了相同的结果。我也尝试过使用 Me.controls.setChildIndex() 但这也无济于事。

我很茫然。我一定做错了什么。请帮忙。

谢谢。

这是我的代码:

' Add the label
' ------------------
  Dim menu_label As New Label
  menu_label.Text = "Menu"
  menu_label.Location = New Point(50, 20)
  menu_label.Width = 50
  menu_label.Font = New Font(main_font, main_font_size, FontStyle.Regular)
  menu_label.ForeColor = Color.White
  Me.Controls.Add(menu_label)

' create the image
' ---------------
  Dim logo As New PictureBox
  Dim logo_image As Image
  logo_image = My.Resources.logo
  logo.Image = logo_image
  logo.Width = 30
  logo.Height = 30
  logo.Left = 5
  logo.Top = 0
  Me.Controls.Add(logo)

' add a line
' ----------
  Dim line As New Panel
  line.Height = 1
  line.Width = Me.Width
  line.BackColor = Color.Red
  line.Location = New Point(0, 32)
  Me.Controls.Add(line)


' end code
' ---------------------------------

无论我按什么顺序排列,都只会显示前两项。所以我要么只得到标志和菜单标签,要么只得到标志和线条,或者只得到线条和菜单标签。疯了!

所以我尝试了:

Me.Controls.SetChildIndex(logo, 0)
Me.Controls.SetChildIndex(menu_label, 1)
Me.Controls.SetChildIndex(line, 2)

分配到 2 级的项目永远不会出现。

【问题讨论】:

  • 我在加载事件中尝试了您的代码,第一部分,并看到了所有三个项目。我采用了默认字体。
  • 查看每组前后所有相关控件的索引。我怀疑他们在每次更改后都会受到影响。如果我是你,我会创建一个用户控件,并将这三个包含在其中。

标签: vb.net controls layer


【解决方案1】:

我也进行了测试,它对我来说效果很好。将表单背景颜色更改为黑色,以便您更好地查看结果:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    ' Add the label
    ' ------------------
    Dim menu_label As New Label
    menu_label.Text = "Menu"
    menu_label.Location = New Point(50, 20)
    menu_label.Width = 50
    'menu_label.Font = New Font(main_font, main_font_size, FontStyle.Regular)
    menu_label.ForeColor = Color.White
    Me.Controls.Add(menu_label)

    ' create the image
    ' ---------------
    Dim logo As New PictureBox
    Dim logo_image As Image
    'logo_image = My.Resources.logo
    'logo.Image = logo_image
    logo.BackColor = Color.Yellow
    logo.Width = 30
    logo.Height = 30
    logo.Left = 5
    logo.Top = 0
    Me.Controls.Add(logo)

    ' add a line
    ' ----------
    Dim line As New Panel
    line.Height = 1
    line.Width = Me.Width
    line.BackColor = Color.Red
    line.Location = New Point(0, 32)
    Me.Controls.Add(line)

    Me.BackColor = Color.Black
End Sub

您的表单上还有什么?或许你可以发个截图?

【讨论】:

  • 你把“我是个白痴”的帖子放在哪里?我终于弄清楚我在做什么。表单加载后,我有一个 Sub 删除除前两个之外的所有控件,然后在读取一些参数后将它们添加回来。我完全忘记了这是怎么回事。对不起。但也许我应该学习添加一个像 Tony Said 这样的用户控件。我将不得不学习如何做到这一点。所以也许这不是一无所有。谢谢。
  • 它发生了......很高兴你明白了。 ;)
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 2014-07-23
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多