在我的VB解决方案中,我在网格中排列了很多按钮。加载程序后,将其中一个按钮设置为正确的按钮(您必须单击该按钮才能获胜)。有人可以将我的方向指向正确的方向吗?因为必须有一种更好的方法,而不是手动编码每个按钮,并为每个按钮创建事件处理程序。
您不必给我一个工作的例子,只是关于如何完成的总体想法。
谢谢。
如果要在网格中排列按钮,请使用TableLayoutPanel或将按钮直接添加到表单中并计算其位置。如果要在尺寸大小时自动排列按钮,则TableLayoutPanel
很有用,否则直接添加按钮对我来说似乎更容易。
将按钮添加到形式级别定义的阵列中,以使它们易于访问
Public Const NColumns As Integer = 5, NRows As Integer = 4
Private buttons As Button(,) = New Button(NColumns - 1, NRows - 1) {}
您可以轻松地在循环中添加按钮
For ix As Integer = 0 To NColumns - 1
For iy As Integer = 0 To NRows - 1
Dim btn = New Button()
btn.Text = String.Format("{0:d2}{1:d2}", ix, iy)
btn.Location = New Point(leftMargin + ix * xDistance,
topMargin + iy * yDistance)
btn.Size = New Size(buttonWidth, buttonHeight)
AddHandler btn.Click, Addressof Button_Clicked
buttons(ix, iy) = btn
Controls.Add(btn)
Next
Next
您可以使用随机生成器来确定获胜按钮。将其定义为表单成员,而不是本地变量。
Private randomGenrator As System.Random = New System.Random()
确定坐标
Dim xWins = randomGenrator.Next(NColumns) 'Returns a number between 0 and NColumns-1
Dim yWins = randomGenrator.Next(NRows)
点击处理程序看起来像这样
Private Sub Button Button_Clicked(sender As Object, e As EventArgs)
If sender = buttons(xWins, yWins) Then
'You win
Else
'You loose
End
End Sub
首先,您说想要一个按钮网格,因此您必须在表单中具有FlowLayoutPanel
控件,以便让您要添加的按钮自动安排。其次,您必须使用for循环,r任何形式的外观,才能添加要添加到先前添加的" flowlayoutpanel"的按钮。 课堂答案 Dim Stranswertext作为字符串 昏暗的响应flag作为布尔人 结束班
Sub LoadForm(byval a_Answers as Answer())
Dim i as Integer = 0
Dim b as Button
For(i=0;i<NUM_OF_BUTTONS;i++)
b = New Button()
b.Text = "Choice -" & i & "- " & a_Answers(i).strAnswerText
b.Tag = a_Answers(i).AnswerFlag
'Supposing that the FlowLayoutPanel control name is fl
AddHandler b.Click, Addressof Clicked
fl.controls.Add(b)
End For
End Sub
Sub Button Clicked(sender as object, e as EventArgs)
if sender.Tag = True
'True answer
else
'Wrong answer
end if
End Sub