2014-12-09 1 views
0

Я делаю программу TicTacToe на Vb.net, и это по существу 9 игр в одну «большую» игру. Таким образом, у меня есть 81 кнопки, которые я хочу отключить, чтобы определить победителя. Как я могу адресовать их всех в кратчайший объем кода?Как решить множество кнопок в vb.net в кратчайшем коде

Private Sub CheckOverallWinner() 
If humangame1 = 1 And humangame2 = 1 And humangame3 = 1 Then 
MsgBox("Human Wins") 
Button1.Enabled = False 
Button2.Enabled = False 
Button3.Enabled = False 
Button4.Enabled = False 
Button5.Enabled = False 
Button6.Enabled = False 
Button7.Enabled = False 
Button8.Enabled = False 
Button9.Enabled = False 
End If 
End Sub 

Таким образом, вместо того, чтобы писать Button_.Enabled = False полностью через 81 есть более короткий путь? Благодаря!

+1

Добавьте их в список и перейдите по списку. –

+0

81 кнопок? Я думаю, вам, возможно, придется пересмотреть свою логику. ;) –

ответ

0
Dim o As Object 
    For Each o In Me.Controls 
     If TypeOf o Is Button Then 
      o.Enabled = False 
     End If 
    Next 

Просто попытался это в VS2008

0

Другой вариант с использованием Controls.Find(). Это будет работать независимо от того, где находятся кнопки, даже если они находятся в нескольких контейнерах:

Private Sub Foo() 
    SetButtonsState(False) 
End Sub 

Private Sub SetButtonsState(ByVal state As Boolean) 
    Dim matches() As Control 
    For i As Integer = 1 To 81 
     matches = Me.Controls.Find("Button" & i, True) 
     If matches.Length > 0 AndAlso TypeOf matches(0) Is Button Then 
      Dim btn As Button = DirectCast(matches(0), Button) 
      btn.Enabled = state 
     End If 
    Next 
End Sub 
Смежные вопросы