步驟 4:將 Click 事件處理常式加入至每個標籤
配對遊戲的運作方式如下:
當玩家選擇其中一個含有隱藏圖示的方形時,則程式會將圖示色彩變更為黑色,以便對玩家顯示圖示。
然後,玩家會選擇另一個隱藏的圖示。
如果圖示相符,則會保持可見狀態。如果不相符,則這兩個圖示會再次隱藏。
若要讓您的程式以該種方式運作,您可加入 Click 事件處理常式,以變更已選擇標籤的色彩。
若要將 Click 事件處理常式加入至每一個標籤
在 [Windows Form 設計工具] 中開啟表單。在 [方案總管] 中,選擇 Form1.cs 或 Form1.vb。在功能表列上選擇 [檢視]、[設計工具]。
選擇第一個 Label 控制項以選取該項目。接著,按住 CTRL 鍵,同時選擇其他每一個標籤加以選取。確定已選取每一個標籤。
在 [屬性] 視窗中選擇工具列上的 [事件] 按鈕,檢視 [屬性] 視窗中的 [事件] 頁面。向下捲動至 [Click] 事件,並在方塊中輸入 label_Click,如下列圖片所示。
顯示 Click 事件的屬性視窗
選擇 ENTER 鍵。IDE 會將名稱為 label_Click() 的 Click 事件處理常式加入至程式碼,並將它連結至表單上的每一個標籤。
填入程式碼的其餘部分,如下所示:
''' <summary> ''' Every label's Click event is handled by this event handler ''' </summary> ''' <param name="sender">The label that was clicked</param> ''' <param name="e"></param> ''' <remarks></remarks> Private Sub label_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label9.Click, Label8.Click, Label7.Click, Label6.Click, Label5.Click, Label4.Click, Label3.Click, Label2.Click, Label16.Click, Label15.Click, Label14.Click, Label13.Click, Label12.Click, Label11.Click, Label10.Click, Label1.Click Dim clickedLabel = TryCast(sender, Label) If clickedLabel IsNot Nothing Then ' If the clicked label is black, the player clicked ' an icon that's already been revealed -- ' ignore the click If clickedLabel.ForeColor = Color.Black Then Exit Sub clickedLabel.ForeColor = Color.Black End If End Sub
/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; clickedLabel.ForeColor = Color.Black; } }
注意事項
如果您是透過複製並貼上 label_Click() 程式碼區塊而非手動輸入程式碼,請務必取代現有的 label_Click() 程式碼。否則,您將會產生重複的程式碼區塊。
注意事項
您可能會發現事件處理常式上方的 object sender 與教學課程 2:建立計時的數學測驗教學課程中使用的相同。由於您會將不同的 Label 控制項 Click 事件連結至單一事件處理常式方法,因此不論使用者選擇哪一個標籤,都會呼叫相同的方法。此事件處理常式方法需要知道已選擇哪一個標籤,因此它會對該 Label 控制項使用名稱 sender 來加以識別。此方法的第一行告知程式,它不只是一個一般物件,還是一個 Label 控制項,而且它會使用名稱 clickedLabel 來存取標籤的屬性和方法。
這個方法會先檢查是否已成功地將 clickedLabel 從物件轉換為 Label 控制項。如果轉換不成功,則其值為 null (C#) 或 Nothing (Visual Basic),而且您不會想執行方法中其餘部分的程式碼。接下來,此方法會使用 Label 的 ForeColor 屬性來檢查已選擇標籤的文字色彩。如果 Label 的文字色彩為黑色,則表示已選擇該圖示,且方法已執行完成(這就是 return 陳述式的作用:它會告訴程式停止執行此方法)。否則,表示尚未選擇該圖示,因此,程式會將標籤的文字色彩變更為黑色。
在功能表列上,選擇 [檔案]、[全部儲存] 以儲存進度,然後在功能表列上,選擇 [偵錯]、[開始偵錯] 以執行程式。您應該會看到一個藍色背景的空白表單。在該表單中選擇任一個儲存格,應該就可以看見其中一個圖示。繼續在表單中選擇不同位置。當您選擇圖示時,圖示應該就會出現。
若要繼續或檢視
若要移到下一個教學課程步驟,請參閱步驟 5:加入標籤參考。
若要回到上一個教學課程步驟,請參閱步驟 3:將隨機圖示指派給每個標籤。