진공에 대해 알려주마.

KeyDown, KeyPress and ...... 본문

진공/노하우

KeyDown, KeyPress and ......

하이백 2025. 3. 3. 21:30

키보드 (Key Control)

 

KeyDown과 KeyPress의 기능

KeyDown에서는 e.KeyData와 e.KeyCode가 사용가능하며 여기서는 특수키와 지정된 문자명을 얻을수 있다.

KeyPress는 e.KeyChar을 사용하여 입력한 문자 그대로 받아 처리 할 수 있다.

키 이벤트는 다음 순으로 발생 합니다.
KeyDown
KeyPress
KeyUp

키값 테이블은 여기를 참고 하시라.
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?view=windowsdesktop-9.0

 

    
    private void tbInDEC_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == (Keys.A | Keys.Shift | Keys.Control))
            Console.WriteLine("KeyDown() -> CTRL + SHIFT + A");

        if (e.KeyData == (Keys.D1 | Keys.Alt))
            Console.WriteLine("KeyDown() -> ALT + 1");

        string ch = e.KeyCode.ToString();
        Console.WriteLine("KeyDown() -> " + ch);
    }

    private void tbInDEC_KeyPress(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;
        Console.WriteLine("KeyPress() -> " + ch);
    }
    *

 

위와 같이 작성하여 키를 입력 받아 실행한 결과

    
    "a"
    KeyDown() -> A
    KeyPress() -> a

    "9"
    KeyDown() -> D9
    KeyPress() -> 9

    "Shift" + "A"
    KeyDown() -> ShiftKey
    KeyDown() -> A
    KeyPress() -> A

    "Alt" + "1"
    KeyDown() -> Menu
    KeyDown() -> ALT + 1
    KeyDown() -> D1

    "Ctrl" + "a"
    KeyDown() -> ControlKey
    KeyDown() -> A
    KeyPress() ->      // 아스키코드 특수문자
    *

 

위의 내용을 기초로 하여 숫자만 입력받는 TextBox control을 구성해 보았다.

		
    private void tbInDEC_KeyPress(object sender, KeyPressEventArgs e)
    {
        char ch = e.KeyChar;

        if(char.IsDigit(ch))
        {
            // 0~9 OK
        }
        else if (ch == '.')
        {
            // 입력받은 키 값이 '.'이고, 이미 '.'이 입력되어 있으면 무시
            if (tbInDEC.Text.Contains('.'))
            {
                e.Handled = true;
            }
        }
        else
        {
            // 입력받은 키 값 무시
            e.Handled = true;
        }
    }
    *

'진공 > 노하우' 카테고리의 다른 글

IEEE-754 FLOATING POINT CONVERTER  (0) 2025.02.28
TabControl in C#  (0) 2025.01.18
설비 PC 제어 프로그램 관리  (0) 2024.09.27
Excel에서 dataGridView 붙여넣기  (0) 2024.08.06
가속, 주행, 감속 그리고 TACT  (0) 2023.11.01
Comments