Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_For Loop - Fatal编程技术网

Vb.net 为下一个循环换行

Vb.net 为下一个循环换行,vb.net,loops,for-loop,Vb.net,Loops,For Loop,我有两个嵌套循环,如下所示 对应的变量x和y是x轴、y轴。当x从1运行到10,然后返回一条类似的线 例如: x=(1->10)然后y=1 x=(11->20)然后y=2 x=(xn->XNN)然后y=n 是这样的 Private Sub R1(ByRef RoomTotal As Integer, ByRef RoomInLine As Integer, ByRef RoomW As Integer, RoomH As Integer, ByRef RoomPrefix As String, B

我有两个嵌套循环,如下所示

对应的变量x和y是x轴、y轴。当x从1运行到10,然后返回一条类似的线

例如:

x=(1->10)然后y=1

x=(11->20)然后y=2

x=(xn->XNN)然后y=n

是这样的

Private Sub R1(ByRef RoomTotal As Integer, ByRef RoomInLine As Integer, ByRef RoomW As Integer, RoomH As Integer, ByRef RoomPrefix As String, ByRef RoomTopLeft As Integer, RoomMargin As Integer)

    Dim TotalRoomLine As Integer
    If RoomTotal Mod RoomInLine <> 0 Then
        TotalRoomLine = RoomTotal \ RoomInLine + 1
    Else
        TotalRoomLine = RoomTotal / RoomInLine
    End If

    For y As Integer = 1 To TotalRoomLine Step 1

            For x As Integer = 1 To RoomTotal Step 1

            Dim RoomNo As New Button
            If x <= RoomInLine Then
                RoomNo.Top = RoomTopLeft
                RoomNo.Left = RoomTopLeft + (RoomW * (x - 1)) + (RoomMargin * (x - 1))
                RoomNo.ForeColor = SystemColors.ControlLightLight
            ElseIf RoomInLine < x <= (RoomInLine * y) Then
                RoomNo.Top = RoomTopLeft + (RoomH * (y - 1)) + (RoomMargin * (y - 1))
                RoomNo.Left = RoomTopLeft + (RoomW * (x - 1)) + (RoomMargin * (x - 1))
                RoomNo.ForeColor = Color.Green
            End If

                RoomNo.Width = RoomW
                RoomNo.Height = RoomH
                RoomNo.Name = RoomPrefix & Convert.ToString(x)
                RoomNo.Text = RoomPrefix & Convert.ToString(x)
                RoomNo.BackColor = SystemColors.ControlDark

                RoomNo.FlatStyle = FlatStyle.Flat
                RoomNo.Cursor = Cursors.Hand
                Me.Controls.Add(RoomNo)
            Next
        Next

End Sub


i call function: R1(36, 10, 100, 100, "ROOM", 100, 5)
Private Sub R1(ByRef RoomTotal为整数,ByRef RoomInLine为整数,ByRef RoomW为整数,RoomH为整数,ByRef RoomPrefix为字符串,ByRef RoomTopLeft为整数,RoomMargin为整数)
Dim TotalRoomLine作为整数
如果RoomTotal Mod RoomInLine为0,则
TotalRoomLine=RoomTotal\RoomInLine+1
其他的
TotalRoomLine=RoomTotal/RoomInLine
如果结束
对于y为整数=1的TotalRoomLine步骤1
对于x作为整数=1的步骤1
调暗RoomNo作为新按钮

如果x循环太多。试试这个:

For iRoom As Integer = 0 To RoomTotal - 1

    Dim RoomNo As New Button
    Dim x As Integer = iRoom Mod RoomInLine
    Dim y As Integer = iRoom \ RoomInLine
    RoomNo.Top = RoomTop + (RoomH + RoomMargin) * y
    RoomNo.Left = RoomLeft + (RoomW + RoomMargin) * x

    RoomNo.Width = RoomW
    RoomNo.Height = RoomH
    RoomNo.Name = RoomPrefix & Convert.ToString(iRoom + 1)
    RoomNo.Text = RoomPrefix & Convert.ToString(iRoom + 1)
    RoomNo.BackColor = SystemColors.ControlDark

    RoomNo.FlatStyle = FlatStyle.Flat
    RoomNo.Cursor = Cursors.Hand
    Me.Controls.Add(RoomNo)

Next

那么问题出在哪里呢?当前显示:只有第1行x=1到10是正确的。x=11表示总房间不存在。谢谢Szymon。你的意思是第二行的数字是12而不是11?每行只创建了10个按钮。我有x=n,然后y=n/10=(行)