에디터로 사용하는 텍스트 박스에 입력을 하면서 저장하는 단축키를 추가해주고 싶어서
Ctrl키와 S를 눌렀을 때 저장해주는 특정 함수를 호출하는 이벤트를 추가해봄
2개 이상의 단축키 지정 과정
1. Xaml 컨트롤인 텍스트박스에 키다운/키업 이벤트를 추가해준다
2. CS코드에서 키다운/키업 함수에 키보드 입력을 받는 부분을 추가해준다
3. Ctrl+S를 동시에 눌렀을 때, 사용하고싶은 함수를 호출해준다
먼저 사용중인 Xaml의 텍스트 블럭에 키보드 이벤트를 추가해준다
나중에 줄바꿈이 되는 텍스트 박스 글쓰기 (AcceptsReturn="True")
<!--<TextBox x:Name="textBox" AcceptsReturn="True" KeyDown="textBox_KeyDown" />-->
xaml 코드
<TextBox x:Name="textBox" KeyDown="textBox_KeyDown" />
cs 코드
키보드 입력을 받을 때 필요한 using문과 키다운 이벤트를 추가해주었다
using System.Windows.Input;
private void textBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.S && Keyboard.Modifiers == ModifierKeys.Control)
{
//ctrl+s 를 눌렀을 때 호출할 함수명
}
}
마찬가지로 한가지의 키보드 입력만 받고싶을 때는 아래와 같이 진행하면 된다
using System.Windows.Input;
private void textBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.S)
{
//S 를 눌렀을 때 호출할 함수명
} else if (e.Key == Key.Enter)
{
//텍스트 입력 후 엔터로 호출할 함수명
}
}
위의 코드는 텍스트를 입력 후 엔터로 다음단계를 진행하고싶을 때 추가해준 방식이다
KeyDown 등의 키보드 이벤트에는 PreviewKeyDown과 그냥 KeyDown 2개의 키보드 이벤트가 있는데
두개의 차이는 이것을 작성하면서 찾아보았으므로 다음에 기록할 예정
위의 영역에서 Keyboard.Modifiers라는 부분을 궁금해서 찾아본 결과
모디파이어 키들은 Modifier keys (Ctrl, Alt and/or Shift) 각각 컨트롤, 알트, 시프트 키를 얘기한다고 한다
참고 :
키보드 2개 입력 (ctrl + s)
https://stackoverflow.com/questions/26361441/how-do-i-detect-ctrl-s-in-a-window-in-c-my-eventargs-dont-have-e-modifiers
'WPF' 카테고리의 다른 글
[C#] gridsplitter를 이용한 그리드 row 동적 분할하기 (0) | 2022.06.15 |
---|---|
[C#] 그리드 영역 나누는 RowDefinition과 GridSplitter 동적 생성하는 법 (0) | 2022.03.28 |
[WPF] 텍스트 박스, 엔터키로 줄바꿈, tab키로 들여쓰기 기능 추가하기 (0) | 2021.11.19 |
[C#] WPF 빌드 error, global.json에 지정된 .net sdk 버전을 확인할 수 없습니다 (1) | 2021.10.18 |
[c#] 윈도우 특정 exe 파일, 프로그램 실행하는법 (0) | 2021.09.02 |
[C#] 윈도우 시스템 기본 폴더 경로 가져오는법 (0) | 2021.07.27 |