我刚使卡片选择动态,而不是5个if/elseif语句的序列。StackOverFlowException在For循环中未处理
Private Sub PlayElse()
Dim StartHeads As Integer
Dim CardCheckBoxArray() As CheckBox = {CardCheckBox1, CardCheckBox2, CardCheckBox3, CardCheckBox4, CardCheckBox5, CardCheckBox6, CardCheckBox7, CardCheckBox8, CardCheckBox9, _
CardCheckBox10, CardCheckBox11, CardCheckBox12, CardCheckBox13, CardCheckBox14, CardCheckBox15, CardCheckBox16, CardCheckBox17, _
CardCheckBox18, CardCheckBox19, CardCheckBox20, CardCheckBox21, CardCheckBox22, CardCheckBox23, CardCheckBox24, CardCheckBox25}
'Reset Number Generator
Number = (DeckGroup(Rnd.Next(0, DeckGroup.Count)).ID)
'card 1-5
For StartHeads = 0 To 4
If CardCheckBoxArray(StartHeads).Checked = True And DeckGroup(Number).QuantityInteger > 0 Then
'Grab New Card From Deck
DeckGroup(Number).QuantityInteger -= 1
Player1HandGroup(Number).QuantityInteger += 1
CardTypeArray(StartHeads) = Player1HandGroup(Number).CardType
CardCheckBoxArray(StartHeads).Text = Player1HandGroup(Number).CardNameString
NumberArray(StartHeads) = Number
Else
Call PlayElse()
End If
这是我原来的代码(注意,是一个结束。如果,我只是不想通过卡2-5重复代码)
If CardCheckBox1.Checked = True And DeckGroup(Number).QuantityInteger > 0 Then
'Grab New Card From Deck
DeckGroup(Number).QuantityInteger -= 1
Player1HandGroup(Number).QuantityInteger += 1
CardTypeArray(0) = Player1HandGroup(Number).CardType
CardCheckBox1.Text = Player1HandGroup(Number).CardNameString
NumberArray(0) = Number
没有真正改变除,任何带0的点不是由循环中的相应数字表示的。我在我的项目中有几个类似于这个循环的循环,但不知怎的,这是一个获得一个stackoverflow异常的循环。 CardCheckBoxArray中的CardCheckBoxes最多可达25个,因为游戏中有5名玩家。任何CardCheckBox在这个特定语句中的前6个都不会被访问,因为这个逻辑只代表了玩家1的卡。 (忘记提到的继续按钮时发生错误,突出Private Sub Playelse()
导致子过程的顶部。)
之前,您是否还有'在'Else'里面调用PlayElse()'? – George 2013-03-22 18:12:25