4

我的代码如下所示:

  class MyUserControl : Control { ...
    protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
    {
        base.OnGotKeyboardFocus(e);

        StartDoingSomethingRisky()
    }

    protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
    {
        base.OnLostKeyboardFocus(e);

        StopDoingSomethingRisky();
    }

我是否应该担心在某些情况下我可能会在 MyUserControl 消失后继续进行有风险的操作,或者我是否已经覆盖了 100% 的情况?

4

1 回答 1

1

我能看到的唯一问题是您没有检查哪个元素“丢失”了焦点。

来自http://msdn.microsoft.com/en-us/library/system.windows.uielement.lostkeyboardfocus.aspx:由于此事件使用冒泡路由,因此失去焦点的元素可能是子元素,而不是事件处理程序实际上是附加的。检查事件数据中的 Source 以确定失去焦点的实际元素。

如果您在特定元素获得焦点时发生某些事情并且在失去焦点时停止发生,那么您将需要检查传入的参数以查看所谓的事件。

希望有帮助

于 2013-05-07T12:38:01.670 回答