我剛使卡片選擇動態,而不是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