c# 단축키 ctrl + f 구현 [Winform] 단축키(Accelerator)

seung-jae hwang·2019년 5월 30일
0

C샵

목록 보기
15/17

From : https://namocom.tistory.com/293

System.Windows.Forms의 ProcessCmdKey 메서드가 있다.

namespace System.Windows.Forms
{
public class Form : ContainerControl
{
// ...
protected override bool ProcessCmdKey(ref Message msg, Keys keyData);
// ...
}
}

이것을 오버라이드 한다. (예)
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == (Keys.Control | Keys.F)) {
MessageBox.Show("What the Ctrl+F?");
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
이것은 마치 윈도우 메세지 루프에서 TranslateAccelerator 함수 (링크)를 호출해서 Accelerator 테이블에 정의된 단축키들을 WM_COMMAND 이벤트로 발생시켜주는 일종의 테이블 룩업(look-up)하는 것에 비해, 중간에 후킹처럼 해서 특정 동작을 나중에 구현하게 하는 방법으로 객체지향적인 느낌이 들어갔다.

참고.
http://stackoverflow.com/questions/400113/best-way-to-implement-keyboard-shortcuts-in-a-windows-forms-application
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646335(v=vs.85).aspx

출처: https://namocom.tistory.com/293 [나모의 노트]

0개의 댓글