Share via


방법: 누른 보조 키 확인

사용자의 키 입력을 허용하는 애플리케이션을 만들 때 SHIFT, ALT 및 CTRL 키와 같은 한정자 키를 모니터링할 수도 있습니다. 한정자 키를 다른 키 또는 마우스 클릭과 함께 누를 때 애플리케이션이 적절하게 응답할 수 있습니다. 예를 들어 문자 S를 누르면 간단히 화면에 “s”가 표시될 수 있지만, CTRL+S 키를 누르면 현재 문서를 저장할 수 있습니다. KeyDown 이벤트를 처리하는 경우 이벤트 처리기가 수신한 KeyEventArgsModifiers 속성은 누르는 한정자 키를 지정합니다. 또한 KeyEventArgsKeyData 속성은 비트 OR과 결합된 모든 한정자 키와 함께 누르는 문자를 지정합니다. 단, KeyPress 이벤트 또는 마우스 이벤트를 처리하는 경우 이벤트 처리기는 이 정보를 수신하지 않습니다. 이 경우에는 Control 클래스 대신 ModifierKeys 속성을 사용해야 합니다. 두 경우 모두 적절한 Keys 값 및 테스트 중인 값의 비트 AND를 수행해야 합니다. Keys 열거형은 각 한정자 키의 변형을 제공하므로 올바른 값으로 비트 AND를 수행하는 것이 중요합니다. 예를 들어 SHIFT 키를 나타내는 Shift, ShiftKey, RShiftKeyLShiftKey의 경우 한정자 키로 SHIFT를 테스트하는 올바른 값은 Shift입니다. 마찬가지로 한정자로 CTRL 키 및 ALT 키를 테스트하려면 각각 ControlAlt 값을 사용해야 합니다.

참고

Visual Basic 프로그래머는 Keyboard 속성을 통해 키 정보에 액세스할 수도 있습니다.

누른 한정자 키를 확인하려면

  • ModifierKeys 속성과 Keys 열거형 값이 있는 비트 AND 연산자를 사용하여 특정 한정자 키를 눌렀는지 여부를 확인합니다. 다음 코드 예제에서는 KeyPress 이벤트 처리기 내에서 SHIFT 키를 눌렀는지를 확인하는 방법을 보여 줍니다.

    private:
        void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e)
        {
            if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift)
            {
                MessageBox::Show("Pressed " + Keys::Shift.ToString());
            }
        }
    
    public void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
        {
            MessageBox.Show("Pressed " + Keys.Shift);
        }
    }
    
    Public Sub TextBox1_KeyPress(ByVal sender As Object, _
        ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
    
        If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
            MsgBox("Pressed " + Keys.Shift.ToString())
        End If
    End Sub
    

참고 항목