none
Keyboard.PreviewLostKeyboardFocusEventが来ないでKeyboard.LostKeyboardFocusEventが来る時がある。 RRS feed

  • 全般的な情報交換

  • KeyboardFocus関係で、PreviewLostKeyboardFocusEventが来ないでLostKeyboardFocusEventが来ると言う事があるようです。

     

    私が把握しているのは、アクティブなアプリを切り替えたタイミング。

     

    このタイミング時に、PreviewLostKeyboardFocusEventがハンドル出来ないのにLostKeyboardFocusEventがハンドルされます。

     

     

    Code Snippet

    public partial class Window1 : Window
    {

        static Window1()
        {

            EventManager.RegisterClassHandler(
                typeof(UIElement),
                Keyboard.LostKeyboardFocusEvent,
                new KeyboardFocusChangedEventHandler(OnKeyboardEventHandler),
                true );
            EventManager.RegisterClassHandler(
                typeof(UIElement),
                Keyboard.PreviewLostKeyboardFocusEvent,
                new KeyboardFocusChangedEventHandler(OnKeyboardEventHandler),
                true );
        }

        private static void OnKeyboardEventHandler(

            object sender, KeyboardFocusChangedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(
                string.Format("Info : {0} : {1}", e.RoutedEvent, sender ) );
        }
    }

     

     

    と、こんな感じのコードを入れて、

    ・Window1内部でコントロール間でのKeyboardFocusの変更の時

    ・メモ帳へのアクティブ、Window1のアクティブを切り替えたとき

    等で試してみました。

     

    2008年3月11日 2:41

すべての返信

  •  

    いわゆる Window が,WPF では,トップレベルの Window しかないので,

    そのトップレベルからフォーカスが抜けてしまう場合は,

    抜けることが決まってから

    WM_KILLFOCUS Notification

    が来るだけなので,Previewしても意味ないので,

    発生しないんじゃないかな。

     

    WPF のコントロール間のフォーカスの移動は,擬似的なものなので,

    今までのウィンドウメッセージの仕組みとは無関係に

    ひとつのWindow内の閉じた世界でやれている場合は,

    そのようなイベントの伝播が制御可能ということだと思うんですけどね。

     

     

     

     

     

     

     

    2008年3月11日 16:25
  • FormsHostとかを考えたり、Popupで出来るWindowを

    どう考えるかで色々とあるとは思うんですけど・・・

     

    普通にPreviewXXXイベントでHandled=trueすれば、

    XXXイベントは呼ばれないってのを期待して書くと、

    LostKeyboardFocusEventでは、期待通りに動かない事

    があるので注意しよう! ってだけですね。

     

    他にもこういったイベントがあるのであったりする?

    と考えると怖いです。

    どっかに情報がないですかね ?

    2008年3月12日 1:15