WPF的焦点

3 篇文章 0 订阅

WPF中的焦点

WPF中的焦点分两种:键盘焦点逻辑焦点
很多人刚开始不理解,为什么有两个焦点?
这两个焦点有什么区别?
我应该用哪个?
今天就来讲解一下WPF中的焦点。嗯,看到常见应用那里你就会豁然开朗的。

一、结论

先说结论:键盘焦点是真焦点,逻辑焦点是假焦点。

我们理解的获得焦点是指:一个控件获得焦点后,将处于活动状态。
键盘焦点就是我们通常说的真焦点,当控件获得键盘焦点后,将处于活动状态。
控件获得逻辑焦点时,并不能保证处于活动状态。

二、概念

1.键盘焦点

键盘焦点就是我们常识中的焦点。
当一个控件获得键盘焦点时,这个控件将处于活动状态。
整个桌面上只能有一个键盘焦点,获得键盘焦点的元素,才可以接受键盘输入。

2.逻辑焦点和焦点范围

逻辑焦点:用于记录键盘焦点在焦点范围中的位置。
焦点范围:逻辑焦点可以活动的范围,逻辑焦点不能离开焦点范围。

键盘焦点离开焦点范围时,逻辑焦点不会跟随键盘焦点离开,而是保留在离开时的位置,当键盘焦点回到这个焦点范围时,首先会回到逻辑焦点所在的位置。

三、常见应用

逻辑焦点的应用在多个窗体间交互最为直观。

每当你在网页上的某个输入框准备输入内容时,切换到其他网页或软件,再回到刚才的网页,你会发现,你的光标还是在这个输入框内。为什么他能记住你光标之前的位置呢?我们总是想当然以为,本来就该是这样啊。其实这就是因为窗体中保留了逻辑焦点
你可以直接开两个网页,然后切换看看就知道了。很简单。

键盘焦点回到焦点范围时,逻辑焦点所在控件首先获得键盘焦点
通过这个例子,相信各位瞬间就能理解这三个概念了吧。

四、焦点管理

FcousManager类

FocusManager类为焦点管理提供了两个附加属性。

1.FocusedElement

指定一个控件,当打开这个画面时,这个控件自动获得键盘焦点。

2.IsFocusScope

设置这个附加属性的控件是否建立焦点范围。
如果设置为True,则这个控件内形成一个焦点范围。当焦点离开这个范围时,内部的子控件将会保留逻辑焦点。

以及一些管理焦点的方法:

FcousManager.GetFocusScope()方法

使用该方法返回最近一个焦点范围。

FocusManager.GetIsFocus()方法

指定控件是否时焦点范围。

FocusManager.SetFocused()方法

使一个控件获得逻辑焦点。

注意:要获得焦点的前提是,Focusable属性为True。

其他管理焦点的方法
Keyboard.Focus()方法

尝试为指定控件获得键盘焦点

Control.Focus()方法

尝试为指定控件获得键盘焦点

IsFocused

检测是否获得逻辑焦点

IsKeyboardFocused

检测是否获得键盘焦点

对你有帮助吗?点个赞吧~

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑我归无处

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值