HOWTO · Csharp

C#에서 키 누르기 시뮬레이션

이 기사에서는 C#에서 키 누르기를 시뮬레이션하는 쉽고 간단한 방법을 배웁니다.

이 문서에서는 C#에서 키 누르기를 시뮬레이션하는 빠르고 간단한 접근 방식을 보여줍니다.

테스트하는 동안 선택한 개체(컨트롤 또는 창)에 일련의 푸시된 버튼(키스트로크)을 전송해야 할 수도 있습니다. 선택한 컨트롤이나 창에 키 코드를 전송하여 키워드 테스트 및 스크립트에서 키 입력을 시뮬레이션할 수 있습니다.

C#에서 양식 애플리케이션 만들기

먼저 Visual Studio에서 새 Windows Form 응용 프로그램을 만듭니다.

.cs 디자인 파일을 열고 numberLabel이라는 레이블을 만들고 "Text To Be Displayed"가 될 수 있는 일부 텍스트를 할당하고 정렬을 중간 가운데로 설정하여 깔끔하게 보입니다.

numPadButtonalphabetButton을 만들고 "Click Me" 텍스트를 두 버튼에 추가해 보겠습니다. numPadButton을 두 번 클릭하면 numPadButton_Click 기능으로 이동합니다.

이 함수 내에서 numberLabel에 일부 텍스트를 할당합니다. 이 텍스트는 할당할 키를 누르면 표시됩니다.

private void numPadButton_Click(object sender, EventArgs e) {
  numberLabel.Text = "Numpad Button 0 Pressed";
}

alphabetButton으로 동일한 단계를 수행하십시오. alphabetButton_Click 함수 내에서 numberLabel에 다른 텍스트를 할당합니다. 이 텍스트는 다른 키를 눌렀을 때 표시되기 때문입니다.

private void alphabetButton_Click(object sender, EventArgs e) {
  numberLabel.Text = "Enter Pressed";
}

출력:

C#에서 양식 응용 프로그램 만들기

키보드 이벤트가 양식에 등록되었는지 여부를 결정하는 양식에 대해 KeyPreview 기능을 활성화해야 합니다. 따라서 전체 양식을 클릭하고 오른쪽의 속성 패널에서 KeyPreview 값을 true로 설정합니다.

그런 다음 키 누르기 이벤트를 식별하고 처리하는 KeyDown 이벤트가 필요하고 이를 추가하려면 속성 패널로 이동하여 번개 기호가 있는 이벤트 탭을 엽니다. KeyDown 이벤트까지 아래로 스크롤하고 두 번 클릭합니다.

Form1_KeyDown() 메소드를 생성하고 이 메소드로 이동합니다. 이 메소드는 object 유형의 senderKeyEventArgs 유형의 이벤트 e라는 두 개의 인수를 사용합니다.

private void Form1_KeyDown(object sender, KeyEventArgs e) {}

이제 버튼 클릭을 사용하여 특정 키를 누르는 것을 모방해야 합니다. 이 함수는 푸시된 키를 수신하고 수신된 키가 NumPad0인지 확인한 다음 numPadButton을 클릭합니다.

if (e.KeyCode == Keys.NumPad0) {
  numPadButton.PerformClick();
}

alphabetButton을 사용하여 동일한 프로세스를 따라야 합니다. 따라서 이벤트 탭에서 KeyUp 이벤트를 두 번 클릭하고 Form1_KeyUp() 함수 내에서 수신된 키가 Enter인지 확인한 다음 alphabetButton 클릭을 수행합니다.

using System;

namespace SimulateKeyPress {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void numPadButton_Click(object sender, EventArgs e) {
      numberLabel.Text = "Numpad Button 0 Pressed";
    }

    private void alphabetButton_Click(object sender, EventArgs e) {
      numberLabel.Text = "Enter Pressed";
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.NumPad0) {
        numPadButton.PerformClick();
      }
    }

    private void Form1_KeyUp(object sender, KeyEventArgs e) {
      if (e.KeyCode == Keys.Enter) {
        alphabetButton.PerformClick();
      }
    }

    private void numberLabel_Click(object sender, EventArgs e) {}
  }
}

출력:

키보드에서 Numpad 0을 눌렀을 때.

키보드에서 숫자 키패드 0을 눌렀습니다

키보드에서 Enter를 눌렀을 때.

Enter 키가 키보드에서 눌려짐