ストアアプリでTextBoxのAcceptReturnをTrueに設定するとEnterキーを押してもKeyDownイベントが発生しない対策
WindowsPhoneの国内発売まで毎日ブログ更新の1日目として、めとべや東京#7で話した内容その2について書きます。
ストアアプリでTextBoxのAcceptReturnをTrueに設定するとEnterキーを押してもKeyDownイベントが発生しなくなります。
ただTextBoxで改行したい、EnterキーのKeyDownイベントも取りたいというケースはあると思うのでその対策を。
まずTextBoxを配置します
<Page x:Class="App26.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:App26" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <TextBox x:Name="textBox" AcceptsReturn="True"/> </Grid> </Page>
で、AddHandlerでKeyDownイベントをくっつけます。
この際3つ目の引数であるHandledEventsTooにTrueを渡してあげます。
public MainPage() { this.InitializeComponent(); this.textBox.AddHandler(TextBox.KeyDownEvent, new KeyEventHandler(textBox_KeyDown), true); } void textBox_KeyDown(object sender, KeyRoutedEventArgs e) { new Windows.UI.Popups.MessageDialog("Hello,world!").ShowAsync(); }
以上です。簡単ですね