以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教:文本框控件光标控制 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65177) |
-- 作者:bahamute -- 发布时间:2015/3/10 17:20:00 -- 请教:文本框控件光标控制 以下代码如果放在控件的click事件中,可以达到效果。 Dim tx As WinForm.TextBox= e.Form.Controls("TextBox1") tx.SelectionStart = 3 tx.SelectionLength = 2 问题: 1、上述代码如果在写到旁边的按钮事件里为何无效? 2、想通过键盘左右方向键控制光标,为何以下代码无效(文本框KeyDown事件)? Dim n As Integer n= e.Sender.Text.IndexOf("-") Select Case e.KeyCode
Case Keys.right If e.Sender.SelectionStart = 3 Then e.Sender.SelectionStart = 6 e.Sender.SelectionLength = 2 ElseIf e.Sender.SelectionStart = 6 Then e.Sender.SelectionStart = 9 e.Sender.SelectionLength = 2
endif end select |
-- 作者:Bin -- 发布时间:2015/3/10 17:26:00 -- Dim tx As WinForm.TextBox= e.Form.Controls("TextBox1") tx.SelectionStart = 3 tx.SelectionLength = 2 tx.select 2.上例子看看
|
-- 作者:bahamute -- 发布时间:2015/3/10 17:29:00 -- Dim tx As WinForm.TextBox= e.Form.Controls("TextBox1") tx.SelectionStart = 3 tx.SelectionLength = 2 tx.select 上述代码运行后,控件里所有文本都被选中了,并未实现效果。
|
-- 作者:有点甜 -- 发布时间:2015/3/10 17:30:00 -- 1、
Dim tx As WinForm.TextBox= e.Form.Controls("TextBox1")
tx.select tx.SelectionStart = 3
tx.SelectionLength = 2
2、加入一句 e.Cancel = True
|
-- 作者:bahamute -- 发布时间:2015/3/10 19:11:00 -- 谢谢,第一个问题解决了,第二个还是卡壳。 比如文本框内容为: 00-11-22 在编辑时,如果按下键盘right(→)键,则判断当前光标位置,自动跳到下一个“-”之后并选中两位数字,但运行无效果。 求指教! Dim n As Integer n= e.Sender.Text.IndexOf("-") Select Case e.KeyCode Case Keys.right If e.Sender.SelectionStart >= 0 andalso e.Sender.SelectionStart <2 Then e.Sender.SelectionStart = 3 e.Sender.SelectionLength = 2 ElseIf e.Sender.SelectionStart >= 3 andalso e.Sender.SelectionStart <5 Then e.Sender.SelectionStart = 6 e.Sender.SelectionLength = 2 endif end select |
-- 作者:有点甜 -- 发布时间:2015/3/10 19:17:00 -- 测试有效啊,不行,请上传例子。
输入内容以后,用右键有效啊
Select Case e.KeyCode |
-- 作者:bahamute -- 发布时间:2015/3/10 20:07:00 -- 谢谢有点甜,确实解决了,是e.cancel = True没有用对地方。 |