首页 新闻 会员 周边

WPF 窗体失去焦点问题?如何解决

0
悬赏园豆:10 [已解决问题] 解决于 2010-10-26 17:27

自己定义了一个小键盘,命名为WinKeyBoard,并定义了一个小图标来触发这个键盘,xaml如下:

。。。。
        <Button Grid.Row="1" Grid.Column="1" Name="btn1" Content="1" Click="btn1_Click"></Button>
        <Button Grid.Row="1" Grid.Column="3" Name="btn2" Content="2" Click="btn2_Click"></Button>
        <Button Grid.Row="1" Grid.Column="5" Name="btn3" Content="3" Click="btn3_Click"></Button>

。。。。。

类似于我们的键盘,并且在后台定义了

  private void WinKeyBoard_LostFocus(object sender, RoutedEventArgs e)
        {
            this.Close();
            _navigationService.Update("MainMenu://Operator/Keyboard[Text='小键盘',IsEnabled='true']");//这里的操作是定义 小图标的状态 是否可用
        }

 

遇到的问题是:

当我将手上代码跑起来以后,发现将鼠标选择一个按钮是没有问题的,但是当将鼠标,从一个按钮挪到另外一个按钮时,该窗体就会自动关闭掉!

请问谁能帮我解释问题的原因!谢谢!

问题补充: 测试结果显示,当鼠标从按钮挪开的时候,是不会触发lostFocus事件,但是当 点击 所在界面上的其他任意按钮时,就会触发该事件
玩本本的皮蛋的主页 玩本本的皮蛋 | 初学一级 | 园豆:95
提问于:2010-10-26 16:16
< >
分享
最佳答案
0

没看明白,不过,你的小键盘失去焦点后就自动关闭,应该导致此问题的根本原因。

能否把问题再描述准确些,比如,Button 在小键盘中吗?

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2010-10-26 16:23
按钮是在小键盘中,就跟 微软的计算器类似哦!!
玩本本的皮蛋 | 园豆:95 (初学一级) | 2010-10-26 16:24
@玩本本的皮蛋:明白你的意思了,你的Button没有创建为小键盘主窗体的子控件,所以你点击Button的时候会让父窗体失去焦点。
Launcher | 园豆:45045 (高人七级) | 2010-10-26 16:41
@玩本本的皮蛋:把你的小键盘上的Button的LostFocus事件都过滤掉。如下: private void buttonX_LostFocus(object sender, RoutedEventArgs e) { e.Handled = true; }
Launcher | 园豆:45045 (高人七级) | 2010-10-26 16:53
果然,果然这样是可以的,感谢感谢
玩本本的皮蛋 | 园豆:95 (初学一级) | 2010-10-26 17:27
其他回答(1)
0

看看当鼠标从一个按钮挪开时会不会触发LostFocus事件,这个事件里有关闭的操作。

wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 16:24
测试结果显示,当鼠标从按钮挪开的时候,是不会触发lostFocus事件,但是当 点击 所在界面上的其他任意按钮时,就会触发该事件
支持(0) 反对(0) 玩本本的皮蛋 | 园豆:95 (初学一级) | 2010-10-26 16:31
@玩本本的皮蛋: 那就是鼠标移开的时候,焦点仍在按钮1上,点击按钮2时,按钮1的焦点就失去了。然后执行了按钮1的LostFocus事件了。 把LostFocus中的关闭操作注释掉。 可以把关闭的操作放在点击WinKeyBoard以外的控件时触发
支持(0) 反对(0) wang_yb | 园豆:4891 (老鸟四级) | 2010-10-26 16:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册