共用方式為


步驟 4:將 Click 事件處理常式加入至每個標籤

配對遊戲的運作方式如下:

  1. 當玩家選擇其中一個含有隱藏圖示的方形時,則程式會將圖示色彩變更為黑色,以便對玩家顯示圖示。

  2. 然後,玩家會選擇另一個隱藏的圖示。

  3. 如果圖示相符,則會保持可見狀態。如果不相符,則這兩個圖示會再次隱藏。

若要讓您的程式以該種方式運作,您可加入 Click 事件處理常式,以變更已選擇標籤的色彩。

若要將 Click 事件處理常式加入至每一個標籤

  1. 在 [Windows Form 設計工具] 中開啟表單。在 [方案總管] 中,選擇 Form1.cs 或 Form1.vb。在功能表列上選擇 [檢視]、[設計工具]。

  2. 選擇第一個 Label 控制項以選取該項目。接著,按住 CTRL 鍵,同時選擇其他每一個標籤加以選取。確定已選取每一個標籤。

  3. 在 [屬性] 視窗中選擇工具列上的 [事件] 按鈕,檢視 [屬性] 視窗中的 [事件] 頁面。向下捲動至 [Click] 事件,並在方塊中輸入 label_Click,如下列圖片所示。

    顯示 Click 事件的屬性視窗

    顯示 Click 事件的 [屬性] 視窗

  4. 選擇 ENTER 鍵。IDE 會將名稱為 label_Click() 的 Click 事件處理常式加入至程式碼,並將它連結至表單上的每一個標籤。

  5. 填入程式碼的其餘部分,如下所示:

    ''' <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 陳述式的作用:它會告訴程式停止執行此方法)。否則,表示尚未選擇該圖示,因此,程式會將標籤的文字色彩變更為黑色。

  6. 在功能表列上,選擇 [檔案]、[全部儲存] 以儲存進度,然後在功能表列上,選擇 [偵錯]、[開始偵錯] 以執行程式。您應該會看到一個藍色背景的空白表單。在該表單中選擇任一個儲存格,應該就可以看見其中一個圖示。繼續在表單中選擇不同位置。當您選擇圖示時,圖示應該就會出現。

若要繼續或檢視