vb treeview问题:如何在节点失去焦点时动作?

vb treeview问题:如何在节点失去焦点时动作?,第1张

节点失去焦点有两种情况

1、treeview失去焦点,可以在LostFocus事件中处理

2、人为让所选的节点非高亮显示

Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)

Dim nd As Node

Set nd = TreeView1.HitTest(x, y)

If Button = vbLeftButton Then

If nd Is Nothing Then '点击空白处

TreeView1.SelectedItem = Nothing

'在这里处理

End If

End If

End Sub

好像没有直接设置失去焦点事件。

但换个角度,焦点属于输入范畴。失去焦点意味有其他键盘、鼠标输入,

比如鼠标先点击另外一个控件,才会导致当前控件失去焦点。

就可以在“鼠标点击事件”“键盘输入事件”上加入判断某控件节点node.isFocused()是否有焦点的句子。

要说失去焦点

就不得不先说

获得焦点

大部分有Enabled和Visible属性的对象都有

Got_Focus()

和LostFocus()事件

而且对象的Enabled和Visible属性必须设置为TURE

才可以接受这两个事件

获得焦点即GOT_Focus

何为获得焦点呢

比如TEXT控件而言

他获得焦点的时候光标是在闪的

整个控件处于

一种激活状态

换句话说

焦点也可以说成是光标

比如按下按钮之后

COMMAND控件上有一圈虚线

这就是焦点

所在之处

如果这个焦点从TEXT控件

或者COMMAND控件上转移

了的时候

那么

TEXT或者COMMAND控件的焦点失去事件

即被触发

就FORM而言

是焦点不在窗体之上即触发

比如运行的时候你点击了窗

体以外的部分

TAB键切换顺序时候

或单击对象的用户动作

或者SETFOCUS方法

都可以触发对象的焦点失去事件

SETFOCUS是动态的用代码设置的

最后重申一句

对象的Enabled和Visible属性必

须同时设置为TRUE的时候

才可以接受这两个事件

下面的解释来自MSDN

此事件是在一个对象失去焦点时发生,焦点的丢失或者是由于制表键移动或单击另一个对象 *** 作的结果,或者是代码中使用

SetFocus

方法改变焦点的结果。

语法

Private

Sub

Form_LostFocus(

)

Private

Sub

object_LostFocus([index

As

Integer])

LostFocus

事件包括下列部分:

部分

描述

object

一个对象表达式,其值是“应用于”列表中的一个对象。

index

一个整数,它用来唯一地标识一个在控件数组中的控件。

说明

LostFocus

事件过程主要是用来对更新进行验证和确认。使用

LostFocus

可以在焦点移离控件时引进确认。这类事件过程的另一种用途与在

GotFocus

事件过程中的应用类似,可以隐藏、显示其它对象或者使它们有效或无效。也可使设置在该对象的

GotFocus

事件过程中的条件取反或对其进行更改。

如果由

Visual

Basic

所建立的

.exe

文件要显示一个由也是用

Visual

Basic

所建立的

.dll

文件所创建的对话框,则该

.exe

文件的窗体将得到

Deactivate

LostFocus

事件。这可能是不希望的,因为对话框将不能获得

Deactivate

事件:

如果该对象是进程外的部件。

如果该对象不是用

Visual

Basic

编写成。

在开发环境中当调用一个用

Visual

Basic

所建立的

DDL

时。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11725539.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存