首页 > 编程 > .NET > 正文

[VB.NET]键盘控制焦点移动

2024-07-10 13:00:45
字体:
来源:转载
供稿:网友
---键盘控制焦点移动---
在数据库的项目中,一定会有输入数据的form.最令录入人员头痛的就是每填完一个数据后,要再操作鼠标,或者另一只手按一下tab(不过还是很麻烦).最人性化呢就是:按回车键(在小键盘内输入只要一只手就可以了),还可以用方向键控制.

第一步:form的keypreview的属性为true
第二步:按照需要把tabindex按顺序设置
第三步:编写一个方法,代码如下:

'---focusmove is function name--
'---controlname is the control's name which you want to use ---
private sub focusmove()sub focusmove(byval sender as object, byval e as system.windows.forms.keypresseventargs) handles controlname1.keypress, controlname2.keypress
if e.keychar = chrw(13) 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。

备注
如果将控件的 controlstyles.selectable 样式位设置为 true,该控件包含在另一个控件中,而且其所有父控件都可见并已启用,则 selectnextcontrol 方法激活 tab 键顺序中的下一个控件。

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

label
panel
groupbox
picturebox
progressbar
splitter
linklabel(当控件中没有链接时)
要求
平台: windows 98, windows nt 4.0, windows me, windows 2000, windows xp home edition, windows xp professional, windows server 2003 系列


最后要注意的就是tabindex的设置,如果控件在groupbox中,那么groupbox要在tabindex的顺序中,就是说,如果textbox1在groupbox1中,那么groupbox1.index=1,textbox1.index=2.并且在selectnextcontrold的参数nested=true,即可.还有一些细节大家在平时使用的时候还要多多注意的.
---end---




发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表