C#/WPF
[WPF] AddHandler 로 KeyDownEvent 처리하기
kjun.kr
2023. 4. 28. 23:24
728x90
728x170
키보드 KeyDown 시 AddHandler 를 이용해 이벤트 처리하는 방법입니다.
AddHandler 에 처리할 Keyboard.PreviewKeyDownEvent 를 명시하고 해당 이벤트 발생시
수행될 메서드(OnKeyHandler)를 연결하면 됩니다.
this.AddHandler(Keyboard.PreviewKeyDownEvent, new KeyEventHandler(OnKeyHandler));
MainWindow.xaml
using System;
using System.Windows;
using System.Windows.Input;
namespace Wpf.AddHandlerTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.AddHandler(Keyboard.PreviewKeyDownEvent, new KeyEventHandler(OnKeyHandler));
}
void OnKeyHandler(object sender, KeyEventArgs e)
{
messageTextBox.AppendText("key down " + e.Key + Environment.NewLine);
}
}
}
MainWindow.xaml.cs
<Window
x:Class="Wpf.AddHandlerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Wpf.AddHandlerTest"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<TextBox x:Name="messageTextBox" />
</Grid>
</Window>
KeyDownEvent 는 내부 컨트롤이 있는 경우 내부 컨트롤에 정의하면 안되면 가장 상위단에 AddHandler 를 통해 등록하여
처리해야 이벤트가 발생되지 않는 현상을 방지할수 있습니다.
결과
728x90
그리드형