注册 登录
编程论坛 VB6论坛

怎么限制文本框只能输入汉字的单词,而不能输入词组

kent73 发布于 2015-04-16 19:45, 1060 次点击
怎么限制文本框只能输入汉字的单词,而不能输入词组?
如,需要输入“论坛”,怎么限制需要分别输入“论”和“坛”,而不能一次性输入“论坛”

谢谢!
9 回复
#2
风吹过b2015-04-17 00:04
只有一个想法。
按修改事件里,保存上一次的长度,然后与这次的长度比较,然后判断。
如果直接判断不行,那就再加上时间判断,规定在如 0.1秒内长度只能变化一次,否则就丢弃。

你自己测试一下吧
#3
kent732015-04-17 07:49
回复 2楼 风吹过b
谢谢回复
文本框中是需要输入一段文字,用作打字比赛,由于现在的输入法有联想功能,这样可能会造成不公平,因此设想每次只能输入一个文字,哪怕你打了词组,也是只有一个文字。

比较菜,能不能帮我写一段代码?

谢谢
#4
xzlxzlxzl2015-04-17 08:08
就在keypress事件里处理,时间戳是必须的,一般打字高手一分钟200个汉字,即最快300毫秒一个字,按风版主说的100毫秒的时间戳判断可行。要上课,没脑,有空可以帮你试试,应该不难。
#5
kent732015-04-17 08:23
回复 4楼 xzlxzlxzl
期待你的好消息,先谢了
#6
lianyicq2015-04-17 08:31
一直用86版王码五笔,在属性中直接取消词语联想。
也试了微软拼音输入法,也可以设置为单字输入。
如果这样做,可能问题在于时间的计算。如果参加比赛的机器在局域网中,可以由管理机统一发开始和结束指令以及要输入的内容。来使能和禁止文本框输入,时间到后再自动统计打字速度。
说不定网上有专门的单机打字测速软件。比如很早以前测五笔的WT。

[ 本帖最后由 lianyicq 于 2015-4-17 08:32 编辑 ]
#7
风吹过b2015-04-17 08:41
4楼 xzlxzlxzl 版主 说的对,这种方法很简单直接,可行。比我的想法强多了。
测试代码如下:

Private Sub Text1_KeyPress(KeyAscii As Integer)
Static inputstrtimer As Single                  '定义时间
If Timer - inputstrtimer < 0.1 Then             '太短时间
    KeyAscii = 0                                '清掉输入
End If
    inputstrtimer = Timer                       '保存时间
End Sub
#8
yangfrancis2015-04-17 10:02
计时器加上Text1.Text=Mid(Text1.Text,1,1)看行不行,我没试过
#9
renxiaoyao362015-04-17 17:04
不需要那么烦
Text的Change事件,首先记录下此次变化时的Text的Len长度,记录为全局变量,下次Change的时候检查下是否超过设定时间(需要事先弄个TImer)

[ 本帖最后由 renxiaoyao36 于 2015-4-18 12:00 编辑 ]
#10
kent732015-04-18 08:06
回复 7楼 风吹过b
达到我的要求了,谢谢风版
1