【问题标题】:How to create control dynamically in a Panel Control如何在面板控件中动态创建控件
【发布时间】:2014-02-26 11:54:48
【问题描述】:

我想在一个 Panel 中创建 5 个 PictureBox 控件

Dim a As PictureBox = New PictureBox
Dim loc As Point = New Point(0, 0)

    For n As Integer = 0 To 4
        a.Location = loc
        a.Size = New Size(100, 100)
        a.BorderStyle = BorderStyle.Fixed3D
        a.BackColor = Color.Aqua
        Panel1.Controls.Add(a)
        n = n + 1
        loc = a.Location + New Point(50, 50)
    Next

每次我运行时,面板中只有一个图片框控件位于它从循环中获取的最后一个位置。如何在不使用 FlowLayoutPanel 的情况下在此面板中显示我的 5 个图片框

还有另一个关于循环的问题,我没有使用任何“步骤”,但每次 n 像 n + = 2 一样增加。为什么即使我声明 n = n + 1,它也会像这样增加?

【问题讨论】:

    标签: vb.net for-loop


    【解决方案1】:

    您似乎向面板添加了对同一个图片框的五个引用。我建议你移动:

    Dim a As PictureBox = New PictureBox
    

    在 For 循环中,作为执行的第一条语句。

    【讨论】:

    • 天哪!你说的对!我不知道为什么经过一天的工作后,我无法理解这么简单的事情!不管怎样,谢谢你
    【解决方案2】:

    你可以像这样简化你的代码:

        Dim PicBoxes(4) As PictureBox
    
        For Index As Integer = 0 To PicBoxes.Length - 1
    
            PicBoxes(Index) =
                New PictureBox With
                    {
                      .Location = New Point(50 * Index, 50 * Index),
                      .Size = New Size(100, 100),
                      .BorderStyle = BorderStyle.Fixed3D,
                      .BackColor = Color.Aqua
                    }
    
        Next Index
    
        Panel1.Controls.AddRange(PicBoxes)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多