我的代码如下:
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%的病例?
答案 0 :(得分:1)
我唯一能看到错误的是你没有检查哪个元素“丢失”了焦点。
来自http://msdn.microsoft.com/en-us/library/system.windows.uielement.lostkeyboardfocus.aspx: 由于此事件使用冒泡路由,因此失去焦点的元素可能是子元素,而不是实际附加事件处理程序的元素。检查事件数据中的Source以确定失去焦点的实际元素。
如果你在特定元素获得焦点时发生了某些事情,并在失去焦点时停止发生,那么你需要检查传入的args以查看调用该事件的内容。
希望有所帮助