4단계: 각 레이블에 클릭 이벤트 처리기 추가Step 4: Add a Click Event Handler to Each Label

일치 게임은 다음과 같은 방식으로 진행됩니다.The matching game works as follows:

  1. 플레이어가 아이콘이 숨겨져 있는 사각형 중 하나를 선택하면 프로그램에서 아이콘 색을 검은색으로 변경하여 플레이어에게 해당 아이콘을 보여 줍니다.When a player chooses one of the squares with a hidden icon, the program shows the icon to the player by changing the icon color to black.

  2. 플레이어가 다른 숨겨진 아이콘을 선택합니다.Then the player chooses another hidden icon.

  3. 아이콘이 일치하면 해당 아이콘이 표시되고If the icons match, they stay visible. 일치하지 않으면 두 아이콘 모두 다시 숨겨집니다.If not, both icons are hidden again.

    프로그램이 이런 방식으로 작동하게 하려면 선택한 레이블의 색을 변경하는 Click 이벤트 처리기를 추가해야 합니다.To get your program to work that way, you add a Click event handler that changes the color of the label that is chosen.

각 레이블에 Click 이벤트 처리기를 추가하려면To add a Click event handler to each label

  1. Windows Forms 디자이너에서 폼을 엽니다.Open the form in the Windows Forms Designer. 솔루션 탐색기에서 Form1.cs 또는 Form1.vb를 선택합니다.In Solution Explorer, choose Form1.cs or Form1.vb. 메뉴 모음에서 보기, 디자이너를 차례로 선택합니다.On the menu bar, choose View, Designer.

  2. 첫 번째 레이블 컨트롤을 선택합니다.Choose the first label control to select it. 그런 다음 Ctrl 키를 누른 상태에서 다른 레이블을 각각 선택합니다.Then, hold down the CTRL key while you choose each of the other labels to select them. 모든 레이블이 선택되어야 합니다.Be sure that every label is selected.

  3. 속성 창의 도구 모음에서 이벤트 단추를 선택하여 속성 창의 이벤트 페이지를 표시합니다.Choose the Events button on the tool bar in the Properties window to view the Events page in the Properties window. 다음 그림과 같이 Click 이벤트 위치까지 아래로 스크롤한 후 상자에 label_Click을 입력합니다.Scroll down to the Click event, and enter label_Click in the box, as shown in the following picture.

    Click 이벤트가 표시된 속성 창Properties window showing Click event
    Click 이벤트가 표시된 속성 창Properties window showing Click event

  4. Enter 키를 선택합니다.Choose the ENTER key. IDE에서 label_Click()이라는 Click 이벤트 처리기를 코드에 추가하고 폼의 각 레이블에 후크합니다.The IDE adds a Click event handler called label_Click() to the code, and hooks it to each of the labels on the form.

  5. 다음과 같이 코드의 나머지 부분을 채워 넣습니다.Fill in the rest of the code, as follows:

    /// <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;
        }
     }
    
    ''' <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
    

    참고

    코드를 수동으로 입력하는 대신 label_Click() 코드 블록을 복사하여 붙여 넣는 경우에는 기존 label_Click() 코드를 대체해야 합니다.If you copy and paste the label_Click() code block rather than entering the code manually, be sure to replace the existing label_Click() code. 이렇게 하지 않으면 중복된 코드 블록이 남게 됩니다.Otherwise, you'll end up with a duplicate code block.

    참고

    자습서 2: 시간이 지정된 수학 퀴즈 만들기 자습서에서 사용된 것과 같이 이벤트 처리기의 맨 위에 있는 object sender를 확인할 수 있습니다.You may recognize object sender at the top of the event handler as the same one used in the Tutorial 2: Create a Timed Math Quiz tutorial. 단일 이벤트 처리기 메서드에 대해 다양한 레이블 컨트롤 Click 이벤트를 후크했으므로 사용자가 선택하는 레이블에 관계없이 동일한 메서드가 호출됩니다.Because you hooked up different label control Click event to a single event handler method, the same method is called no matter which label the user chooses. 이벤트 처리기 메서드에서 어떤 레이블이 선택되었는지 알아야 하므로 레이블 컨트롤을 식별하기 위한 sender라는 이름을 사용합니다.The event handler method needs to know which label was chosen, so it uses the name sender to identify the label control. 메서드의 첫 번째 줄을 보면 단순히 일반 개체가 아니라 레이블 컨트롤임을 명시적으로 나타내고 clickedLabel이라는 이름을 사용하여 레이블의 속성 및 메서드에 액세스한다는 것을 알 수 있습니다.The first line of the method tells the program that it's not just a generic object, but specifically a label control, and that it uses the name clickedLabel to access the label's properties and methods.

    이 메서드는 먼저 clickedLabel이 개체에서 레이블 컨트롤로 변환(캐스팅)되었는지 여부를 확인합니다.This method first checks whether clickedLabel was successfully converted (cast) from an object to a label control. 성공적으로 변환되지 않은 경우에는 null(C#) 또는 Nothing(Visual Basic) 값을 포함하고 메서드의 나머지 코드를 실행하지 않습니다.If unsuccessful, it has a value of null (C#) or Nothing (Visual Basic), and you don't want to execute the remainder of the code in the method. 다음으로 메서드는 레이블의 ForeColor 속성을 사용하여 선택된 레이블의 텍스트 색을 확인합니다.Next, the method checks the chosen label's text color by using the label's ForeColor property. 레이블의 텍스트 색이 검정이면 아이콘이 이미 선택되었음을 의미하며 메서드는 완료됩니다.If the label's text color is black, then that means the icon's already been chosen and the method is done. 즉, return 문에서 메서드 실행을 중지하도록 프로그램에 요청합니다. 그렇지 않은 경우 아이콘이 선택되지 않은 것이므로 프로그램에서 레이블의 텍스트 색을 검정으로 변경합니다.(That's what the return statement does: It tells the program to stop executing the method.) Otherwise, the icon hasn't been chosen, so the program changes the label's text color to black.

  6. 메뉴 표시줄에서 파일, 모두 저장을 선택하여 진행 상황을 저장한 다음, 메뉴 모음에서 디버그, 디버깅 시작을 선택하여 프로그램을 실행합니다.On the menu bar, choose File, Save All to save your progress, and then, on the menu bar, choose Debug, Start Debugging to run your program. 파란색 배경의 빈 폼이 나타납니다.You should see an empty form with a blue background. 이때 폼의 아무 셀이나 선택하면 아이콘 중 하나를 볼 수 있어야 합니다.Choose any of the cells in the form, and one of the icons should become visible. 폼에서 다른 위치를 계속 선택해 보십시오.Continue choosing different places in the form. 아이콘을 선택하면 폼에 나타납니다.As you choose the icons, they should appear.

계속하거나 검토하려면To continue or review