Key を押したときのイベントを処理したいのですが、下記のように Windows と TextBox にそれぞれイベントを追加すると両方呼ばれます。
TextBox 内での入力キーダウンは、その中だけ(BarCode_KeyDown())で終わらせたいのですが、Window_KeyDown() を呼び出さない工夫はできますでしょうか?
<TextBox Name="BarCode" 以外のキー操作時は、Window_KeyDown() が呼び出してほしいです。
xaml
1<Window x:Class="ByoriDataSearch.Views.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 : 5 Title="" Height="580" Width="1225" Loaded="Window_Loaded" Closing="Window_Closing" KeyDown="Window_KeyDown"> 6 7 : 8<TextBox Name="BarCode" FontSize="16" Margin="3 -5 3 0" KeyDown="BarCode_KeyDown"/>
両者で Enter を押した処理を分けたい
C#
1 private void Window_KeyDown(object sender, KeyEventArgs e) 2 { 3 if (e.Key == Key.Enter) 4 { 5 // 検索する 6 KensakuStart(); 7 } 8 if (e.Key == Key.Escape) 9 { 10 DialogResult = false; 11 Close(); 12 } 13 } 14 15 private void BarCode_KeyDown(object sender, KeyEventArgs e) 16 { 17 if (e.Key == Key.Enter) 18 { 19 string scanID = BarCode.Text; 20 if (scanID.Length == 0) 21 return; 22 23 : 24 } 25 }
回答2件
あなたの回答
tips
プレビュー