vb.net

位置:IT落伍者 >> vb.net >> 浏览文章

VB.NET:键盘控制焦点移动


发布日期:2019年07月13日
 
VB.NET:键盘控制焦点移动
在数据库的项目中一定会有输入数据的Form最令录入人员头痛的就是每填完一个数据后要再操作鼠标或者另一只手按一下Tab(不过还是很麻烦)最人性化呢就是:按回车键(在小键盘内输入只要一只手就可以了)还可以用方向键控制

第一步:Form的KeyPreview的属性为True

第二步:按照需要把TabIndex按顺序设置

第三步:编写一个方法代码如下:

FocusMove Is Function Name

ControlName Is the Controls Name Which you want to use

Private Sub FocusMove()Sub FocusMove(ByVal sender As Object ByVal e As SystemWindowsFormsKeyPressEventArgs) Handles ControlNameKeyPress ControlNameKeyPress

If eKeyChar = ChrW() Then

SelectNextControl is a Function will be introduced next

SelectNextControl(sender True True True False)

End If

End Sub

SelectNextControl的说明来自MSDN:

激活下一个控件

[Visual Basic]

Public Function SelectNextControl( _

ByVal ctl As Control _

ByVal forward As Boolean _

ByVal tabStopOnly As Boolean _

ByVal nested As Boolean _

ByVal wrap As Boolean _

) As Boolean

[C#]

public bool SelectNextControl(

Control ctl

bool forward

bool tabStopOnly

bool nested

bool wrap

);

[C++]

public: bool SelectNextControl(

Control* ctl

bool forward

bool tabStopOnly

bool nested

bool wrap

);

[JScript]

public function SelectNextControl(

ctl : Control

forward : Boolean

tabStopOnly : Boolean

nested : Boolean

wrap : Boolean

) : Boolean;

参数

ctl

从其上开始搜索的 Control

forward

如果为 true 则在 Tab 键顺序中前移如果为 false 则在 Tab 键顺序中后移

tabStopOnly

true 表示忽略 TabStop 属性设置为 false 的控件false 表示不忽略

nested

true 表示包括嵌套子控件(子控件的子级)false 表示不包括

wrap

true 表示在到达最后一个控件之后从 Tab 键顺序中第一个控件开始继续搜索false 表示不继续搜索

返回值

如果控件已激活则为 true否则为 false

备注

如果将控件的 ControlStylesSelectable 样式位设置为 true该控件包含在另一个控件中而且其所有父控件都可见并已启用则 SelectNextControl 方法激活 Tab 键顺序中的下一个控件

下面列表中的 Windows 窗体控件是不可选择的从该列表中的控件派生的控件也是不可选择的

Label

Panel

GroupBox

PictureBox

ProgressBar

Splitter

LinkLabel(当控件中没有链接时)

要求

平台: Windows Windows NT Windows ME Windows Windows XP Home Edition Windows XP Professional Windows Server 系列

最后要注意的就是TabIndex的设置如果控件在GroupBox中那么GroupBox要在TabIndex的顺序中就是说如果TextBox在GroupBox那么GroupBoxIndex=TextBoxIndex=并且在SelectNextControld的参数nested=true即可还有一些细节大家在平时使用的时候还要多多注意的

end               

上一篇:定制VB.NET控件编程之拦截击键动作

下一篇:VB.NET实现PC与掌上电脑PPC的双向通信