Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在面板控件中动态创建控件_Vb.net_For Loop - Fatal编程技术网

Vb.net 如何在面板控件中动态创建控件

Vb.net 如何在面板控件中动态创建控件,vb.net,for-loop,Vb.net,For Loop,我想在一个面板中创建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.BackCol

我想在一个面板中创建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
每次我运行时,面板中只有一个picturebox控件,位于它从循环中得到的最后一个位置。如何在不使用FlowLayoutPanel的情况下在此面板中放置我的5个pictureboxes


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

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

Dim a As PictureBox = New PictureBox

在For循环中执行第一条语句。

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

Dim a As PictureBox = New PictureBox

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

您可以像这样简化代码:

    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)

您可以这样简化代码:

    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)

哦,我的上帝!你是对的!我不知道为什么经过一天的工作,我不能理解这么简单的事情!无论如何,感谢上帝!你是对的!我不知道为什么经过一天的工作,我不能理解这么简单的事情!无论如何,谢谢你