[VB.NET][WPF][XAML] Enter で Focus を移動する

2013年11月26日

 キーボードでのコントロールの移動は、基本は TAB 押下で移動させるのが Windows のデザインのはずですが、Enter で移動させたい(あるいはさせていた)という場合があります。
 その場合は、以下の EnterThenNextFocus を作成して、これを KeyDown イベントで呼び出されるようにすることで実現できます。

 コードビハインド

Class MainWindow 

    Private Sub EnterThenNextFocus(sender As Object, e As KeyEventArgs)

        If e.Key = Key.Enter Then
            Dim u = DirectCast(sender, UIElement)
            u.MoveFocus(New TraversalRequest(FocusNavigationDirection.Next))

        End If
    End Sub
End Class

 XAML

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <Style TargetType="TextBox">
            <EventSetter Event="KeyDown" Handler="EnterThenNextFocus"/>
        </Style>
        <Style TargetType="ComboBox">
            <EventSetter Event="KeyDown" Handler="EnterThenNextFocus"/>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBox TabIndex="1"/>
        <TextBox TabIndex="4"/>
        <ComboBox TabIndex="2"/>
        <TextBox TabIndex="3"/>
    </StackPanel>
</Window>





カテゴリー: Program, VB.NET, WPF, xaml

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org