블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

윈폼(via C#)으로 각종 툴, 어플리케이션을 만들 때 유저키덕후들을 위한 단축키가 필요할 수 있다. 마우스라는 혁신적인 입력 장치가 있더라도 숙련되면 키보드 이상가기 힘드니까 :)
언뜻 생각하기에는 System.Windows.Forms.Form 클래스에서 KeyDown 이벤트를 잡아서 처리를 하면 될 것 같아 해보았지만, 동작하지 않는다 ㅇㅂㅇ;;
Google신(MS는 Bing신...)에 문의 결과 ProcessCmdKey 메소드를 오버라이드 한다면 된다고 한다. 간단히 해보면 다음과 같다.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
        if (!base.ProcessCmdKey(ref msg, keyData)) // 위에서 처리 안했으면
        {
                // 여기에 처리코드를 넣는다.
                if (keyData.Equals(Keys.F1))
                {
                        // 대충 이런 식으로 처리한다.
                        return true;
                }
                else
                {
                        return false;
                }
        }
        else
        {
                return true;
        }
}


위 코드에서 return false; 의 의미는 내가 처리를 안했으니 혹시나 자식 클래스에서 오버라이드 할꺼면 밑에서 처리해라~ 라는 의미이다. 반대로 return true; 는 밑에서 처리하지 말라는 소리다. 마찬가지로  base.ProcessCmdKey가 거짓일 때만 처리하는 것도 부모 클래스에서 키입력에 대해서 처리를 했다면 처리를 하지 않는다는 의미이다.

아무튼, 이리하여 간단히 단축키를 구현할 수 있다.


출처 : http://zeru.kr/blog/539
반응형

'Programming > C#' 카테고리의 다른 글

TreeView 내용 추가하기  (2) 2010.07.14
C++ 바이너리(Binary) 데이터를 C# BinaryReader 로 읽기.  (0) 2010.07.14
Windows Forms Application  (2) 2010.07.07
PointToClient 와 PointToScreen  (0) 2010.07.07
단축키 만들기 with C#  (1) 2010.07.07
Posted by blueasa
, |