以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  再谈SendKeys的使用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4237)

--  作者:yangming
--  发布时间:2009/9/6 13:07:00
--  再谈SendKeys的使用
     窗口中有一个文本框,用于输入数据,如果输错了,想删除,我点一下按钮,希望执行键盘的退格键的功能,但是我发现,不论我的光标放在何处,执行下列代码,都会删除文本框中所有的字符,而退格键的功能是,只删除光标左边的一个字符,应该如何写代码?

退格按钮的代码:
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{BS}")

--  作者:mr725
--  发布时间:2009/9/6 13:39:00
--  
全选了再Backspace 那是肯定会删除文本框中所有的字符

这样:?
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{right 10}")       \'次数不够可增加~
SendKeys.Send("{BS}")
[此贴子已经被作者于2009-9-6 13:52:26编辑过]

--  作者:yangming
--  发布时间:2009/9/6 14:01:00
--  
以下是引用mr725在2009-9-6 13:39:00的发言:
全选了再Backspace 那是肯定会删除文本框中所有的字符

这样:?
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{right 10}")       \'次数不够可增加~
SendKeys.Send("{BS}")
[此贴子已经被作者于2009-9-6 13:52:26编辑过]

谢谢老师,这个好用,呵呵


--  作者:yangming
--  发布时间:2009/9/6 14:10:00
--  

还有点问题,比如一组数字:9876,不论光标放在何处,它首先删除的都是"6",而退格键,是删除光标前面的一位数啊
我的代码是:
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{right 1}")
SendKeys.Send("{BS}")


--  作者:czy
--  发布时间:2009/9/6 16:02:00
--  
以下是引用mr725在2009-9-6 13:39:00的发言:
全选了再Backspace 那是肯定会删除文本框中所有的字符

这样:?
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{right 10}")       \'次数不够可增加~
SendKeys.Send("{BS}")
[此贴子已经被作者于2009-9-6 13:52:26编辑过]


SendKeys.Send("{right 10}") 和SendKeys.Send("{right}") 应该是没有区别的。


--  作者:czy
--  发布时间:2009/9/6 16:10:00
--  
以下是引用yangming在2009-9-6 14:10:00的发言:

还有点问题,比如一组数字:9876,不论光标放在何处,它首先删除的都是"6",而退格键,是删除光标前面的一位数啊
我的代码是:
e.Form.Controls("TextBox1").Select()
SendKeys.Send("{right 1}")
SendKeys.Send("{BS}")


如果能判断出光标处于字符中的哪个位置就有办法,否则没门。


--  作者:yangming
--  发布时间:2009/9/6 16:35:00
--  
以下是引用czy在2009-9-6 16:10:00的发言:


如果能判断出光标处于字符中的哪个位置就有办法,否则没门。

我也想过这问题,可是这个位置不好判断,但是我又想了,模拟键盘,就不该有这样的要求啊


--  作者:mr725
--  发布时间:2009/9/6 17:33:00
--  
以下是引用czy在2009-9-6 16:02:00的发言:


SendKeys.Send("{right 10}") 和SendKeys.Send("{right}") 应该是没有区别的。

对呀,应为有Select() ,我晕~


--  作者:易狐
--  发布时间:2009/9/6 17:40:00
--  
因为点击按钮,文字框焦点丢失,可以改用MouseHover事件,代码为SendKeys.Send("{BS}")即可实现效果!

注:不要放在MouseEnter等其他事件中,容易误删除!
--  作者:程兴刚
--  发布时间:2009/9/6 18:07:00
--  
不过我认为没必要这么用,不管是表格还是文字框,输入内容几乎都在键盘操作,去点击按钮还要改变操作方式,那就不如直接点击Backspace键来得更快捷!