C# TAB, 방향키, Control, Alt, Shift Key 입력 처리
Programming/C# / 2011. 1. 20. 13:40
다음 메쏘드를 이용하여 알아내면 됩니다.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
사용법은 아래 소스코드를 보시고 이해 하시면 될것 같네요..
동시 키 눌림은 아래와같이 OR (|) 연산자를 이용하시면 되는데..
간혹 Ctrl + C, Ctrl + V, Ctrl + X 등이 캐치 되지 않는 경우가 있습니다.
그럴경우는 툴박스나, 메뉴바, 컨텍스트메뉴 (마우스 오른쪽메뉴) 에서 해당 숏컷이 등록되어 있는지 확인하시고,
등록이 되어 있다면, 해당 숏컷에 이벤트를 등록 해 주시면 됩니다.
메소드를 보시면 제일 마지막에
return base.ProcessCmdKey(ref msg, keyData);
이런 부분이 있습니다.
저 부분이 다음 이벤트로 이벤트를 넘겨주는 역할을 하게 되는것이죠..
즉 ProcessCmdKey 가 받은 이벤트를 오버라이딩하여 우리가 원하는 코드를 넣었으니,
다시 원래 가야할 길로 보내주는겁니다.
KeyDown 이나.. 그 전에 어떤 이벤트 핸들러가 있다면 그쪽으로 넘어가겠죠..;;;
정확한 내용은 찾는데로 업뎃하겠습니다..
예제 소스를 보시면 쉽게 이해가 되시리라 믿습니다.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Down:
case Keys.Up:
case Keys.Right:
case Keys.Left:
case Keys.Control | Keys.Down:
case Keys.Control | Keys.Up:
case Keys.Control | Keys.Right:
case Keys.Control | Keys.Left:
// 방향키, 혹은 컨트롤키 + 방향키가 입력되었을때
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.X:
// 잘라내기 (Ctrl + X)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.C:
// 복사하기 (Ctrl + C)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.V:
// 붙여넣기 (Ctrl + V)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
사용법은 아래 소스코드를 보시고 이해 하시면 될것 같네요..
동시 키 눌림은 아래와같이 OR (|) 연산자를 이용하시면 되는데..
간혹 Ctrl + C, Ctrl + V, Ctrl + X 등이 캐치 되지 않는 경우가 있습니다.
그럴경우는 툴박스나, 메뉴바, 컨텍스트메뉴 (마우스 오른쪽메뉴) 에서 해당 숏컷이 등록되어 있는지 확인하시고,
등록이 되어 있다면, 해당 숏컷에 이벤트를 등록 해 주시면 됩니다.
메소드를 보시면 제일 마지막에
return base.ProcessCmdKey(ref msg, keyData);
이런 부분이 있습니다.
저 부분이 다음 이벤트로 이벤트를 넘겨주는 역할을 하게 되는것이죠..
즉 ProcessCmdKey 가 받은 이벤트를 오버라이딩하여 우리가 원하는 코드를 넣었으니,
다시 원래 가야할 길로 보내주는겁니다.
KeyDown 이나.. 그 전에 어떤 이벤트 핸들러가 있다면 그쪽으로 넘어가겠죠..;;;
정확한 내용은 찾는데로 업뎃하겠습니다..
예제 소스를 보시면 쉽게 이해가 되시리라 믿습니다.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Down:
case Keys.Up:
case Keys.Right:
case Keys.Left:
case Keys.Control | Keys.Down:
case Keys.Control | Keys.Up:
case Keys.Control | Keys.Right:
case Keys.Control | Keys.Left:
// 방향키, 혹은 컨트롤키 + 방향키가 입력되었을때
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.X:
// 잘라내기 (Ctrl + X)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.C:
// 복사하기 (Ctrl + C)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
case Keys.Control | Keys.V:
// 붙여넣기 (Ctrl + V)
// 처리, 혹은 다른 메쏘드 호출을 여기에 적어주시면 됩니다.
break;
default:
break;
}
return base.ProcessCmdKey(ref msg, keyData);
}
반응형
'Programming > C#' 카테고리의 다른 글
DataGridView to XML (0) | 2011.03.23 |
---|---|
ToolTip 사용하기 (0) | 2011.02.11 |
[펌] 외부 응용프로그램 실행하기 (Process.Start 메서드) - CMD (0) | 2011.01.13 |
sendmessage in C# (1) | 2010.12.27 |
C# SendMessage Keypress (1) | 2010.12.26 |