2015-10-14 70 views
0

如何改變背景色爲每52標籤的同時

正如你可以在圖片中,我要讓我點擊一張椅子(綠色方塊)每一次,我想改變回顏色變成棕色,使另一把椅子變灰。但問題是,複製和粘貼相同的代碼以便實現這一點真的很累。我一直在考慮使用循環,但我無法弄清楚如何。無論如何,要做一個可以循環的短代碼或者不需要一遍又一遍地複製和粘貼相同內容的東西?每個座位都被重新命名爲(Seat1,Seat2,Seat3,..)讓我覺得有可能使用循環?

+0

這是一個Windows窗體應用程序或網站? –

+0

@MartinParkin它是一個Windows窗體應用程序 –

+4

只需枚舉窗體的'Controls'集合中的控件即可。如果控件是一個'Label',其ID以'Seat'開頭,那麼你可以改變它的顏色。 –

回答

1

爲所有座位創建一個處理程序,並在窗體顯示時將處理程序鉤到每個座位。我用三個座位測試了這個。

Const numofSeats As Integer = 3 'change to reflect number of seats 
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown 
    For x As Integer = 1 To numofSeats 
     Dim lbl As Label = DirectCast(Me.Controls("Seat" & x.ToString), Label) 
     lbl.BackColor = Color.Green 
     AddHandler lbl.Click, AddressOf Seat_Click 
    Next 
End Sub 

Private Sub Seat_Click(sender As Object, e As EventArgs) 
    Dim lbl As Label = DirectCast(sender, Label) 
    lbl.BackColor = Color.Brown 
    ' 
    'Other? chair to gray? 
    ' 
End Sub