Vb.net 如何使用数组在VB中创建数量可变的图片框?
我有下面的代码,正如你可能看到的,当用户按下按钮时,我试图使它获得他们想要的“巧克力片”的数量,并将它们放在表单上的某个范围内。我没有收到任何错误,但没有巧克力片显示Vb.net 如何使用数组在VB中创建数量可变的图片框?,vb.net,cookies,Vb.net,Cookies,我有下面的代码,正如你可能看到的,当用户按下按钮时,我试图使它获得他们想要的“巧克力片”的数量,并将它们放在表单上的某个范围内。我没有收到任何错误,但没有巧克力片显示 Private Sub cookiesButton_Click(sender As Object, e As EventArgs) Handles cookiesButton.Click Dim XCoord As Integer Dim YCoord As Integer Dim
Private Sub cookiesButton_Click(sender As Object, e As EventArgs) Handles cookiesButton.Click
Dim XCoord As Integer
Dim YCoord As Integer
Dim arraySize As Integer = Integer.TryParse(cookiesTextBox.Text, arraySize)
Dim loopCount As Integer = 0
Dim chipCount(arraySize) As PictureBox
Do
loopCount += 1
If loopCount > arraySize Then Exit Do
chipCount(loopCount) = New PictureBox
Controls.Add(chipCount(loopCount))
Do Until XCoord > 0 And YCoord > 0
XCoord = (Rnd() * 10)
YCoord = (Rnd() * 10)
Loop
chipCount(loopCount).Image = My.Resources.Chocolae_chip_
If YCoord < 40 Then YCoord += 40
If YCoord > 362 Then YCoord -= 40
If XCoord < 116 Then XCoord += 116
If XCoord > 408 Then XCoord -= 116
chipCount(loopCount).Top = YCoord
chipCount(loopCount).Width = 50
chipCount(loopCount).Height = 50
chipCount(loopCount).SizeMode = PictureBoxSizeMode.StretchImage
chipCount(loopCount).Left = XCoord
chipCount(loopCount).Visible = True
' --------------------------------------------------------
XCoord = 0
YCoord = 0
Loop
End Sub
Private子cookiesButton\u单击(发送者作为对象,e作为事件参数)处理cookiesButton。单击
作为整数的Dim XCoord
Dim YCoord作为整数
Dim arraySize As Integer=Integer.TryParse(cookiesTextBox.Text,arraySize)
Dim loopCount为整数=0
将芯片数量(阵列化)设置为PictureBox
做
循环计数+=1
如果loopCount>arraySize,则退出Do
chipCount(loopCount)=新的PictureBox
控件。添加(芯片计数(循环计数))
直到XCoord>0和YCoord>0为止
XCoord=(Rnd()*10)
YCoord=(Rnd()*10)
环
chipCount(loopCount).Image=My.Resources.Chocolae\u chip_
如果YCoord<40,则YCoord+=40
如果YCoord>362,则YCoord-=40
如果XCoord<116,则XCoord+=116
如果XCoord>408,则XCoord-=116
chipCount(loopCount).Top=YCoord
芯片数(循环计数)。宽度=50
芯片数(loopCount)。高度=50
chipCount(loopCount).SizeMode=PictureBoxSizeMode.StretchImage
芯片计数(loopCount)。左=XCoord
chipCount(loopCount).Visible=True
' --------------------------------------------------------
XCoord=0
YCoord=0
环
端接头
此行不正确:
Dim arraySize As Integer = Integer.TryParse(cookiesTextBox.Text, arraySize)
Integer.TryParse
返回True或False,具体取决于cookiesTextBox.Text
是否成功解析为整数。当您将返回值指定给arraySize
时,这些值将转换为-1或0。你应该写一些类似的东西
Dim arraySize As Integer
If Not Integer.TryParse(cookiesTextBox.Text, arraySize) Then
' TODO: Display an error message.
Return
End If
刘先生比我先犯了特里帕斯错误,但有一种更干净的方法可以做到这一点。我会这样处理:
if Integer.TryParse(cookiesTextBox.Text, chipCount ) then
For n as integer = 0 to chipCount
Dim pic as New PictureBox
With pic
' ... set all the properties
.Image = My.Resources.Chocolae_chip_
.Top = YCoord ' etc etc etc
' ....
End With
Me.Contols.Add(pic)
Next n
End If
实际上不需要数组,因为它们将存在于控件集合中。For/Next循环比Do/loop好得多,因为您知道要循环多少次