VB6.0 如何编写事件达到控件数组文本框可自动回退字符的功能

zhy934453950 2014-06-16 07:20:06
我只实现了输入完后自动跳下一个文本框的功能,可自动回退字符功能还没搞定。。。。求帮助
text2(i)控件全部输入完

只能退掉最后一位字符
...全文
247 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vansoft 2014-06-20
  • 打赏
  • 举报
回复
不区分,几个是字符串,一个字也是,没有字也是。
zhy934453950 2014-06-19
  • 打赏
  • 举报
回复
引用 12 楼 vansoft 的回复:
为嘛非要九个框?一个框输入九位数不行? 把9位数拆成九个数字好了啊。 吃力不讨好。
VB这东西不分字符,去字符串吗?以前用C语言用习惯了,基本上都是定义char,不常用string。VB不区分字符与字符串吗?怎么看好多实例都是直接定义字符串没定义成char的
vansoft 2014-06-19
  • 打赏
  • 举报
回复
为嘛非要九个框?一个框输入九位数不行? 把9位数拆成九个数字好了啊。 吃力不讨好。
zhy934453950 2014-06-17
  • 打赏
  • 举报
回复
引用 10 楼 yachong 的回复:
[quote=引用 9 楼 zhy934453950 的回复:] 我希望只是光标可以跨控件移动,因为我已经用语句定义了“退格”可用,而不是直接把text文本框直接清屏。。。。 ]
哦,你说的这句话“现在要删除字符,只能选一个文本框,按一下退格,我想,按住直接可以跨文本框退格,不需要在手工选定了”真心不好理解成光标移动不删除[/quote] 我说话比较随意不注意小节,不好意思啊,被这个问题搞抓狂好几天了。。。。(PS:LZ我只是,开发这个软件用来泡妹子,方便查他个人资料,看看他家是哪的方便聊天有聊得)
yachong 2014-06-17
  • 打赏
  • 举报
回复
引用 9 楼 zhy934453950 的回复:
我希望只是光标可以跨控件移动,因为我已经用语句定义了“退格”可用,而不是直接把text文本框直接清屏。。。。 ]
哦,你说的这句话“现在要删除字符,只能选一个文本框,按一下退格,我想,按住直接可以跨文本框退格,不需要在手工选定了”真心不好理解成光标移动不删除
zhy934453950 2014-06-17
  • 打赏
  • 举报
回复
引用 6 楼 yachong 的回复:
Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii >= vbKey0 And keyaysii <= vbKey9 Then
If Index < Text2.UBound Then
Index = Index + 1
End If
ElseIf KeyAscii = vbKeyBack Then
Text2(Index).Text = ""
If Index > Text2.LBound Then
Index = Index - 1
End If
Else
KeyAscii = 0
End If

Text2(Index).SetFocus
Text2(Index).SelStart = 0
Text2(Index).SelLength = Len(Text2(Index).Text)
End Sub

我希望只是光标可以跨控件移动,因为我已经用语句定义了“退格”可用,而不是直接把text文本框直接清屏。。。。
求解答
of123 2014-06-17
  • 打赏
  • 举报
回复
代码贴错地方了。就贴在 Case 8 的下面。 键码 8 是退格键(BackSpace),当然是向前清除。
yachong 2014-06-17
  • 打赏
  • 举报
回复
呃 刚发现楼主貌似在做坏事
yachong 2014-06-17
  • 打赏
  • 举报
回复
Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer)
    If KeyAscii >= vbKey0 And keyaysii <= vbKey9 Then
        If Index < Text2.UBound Then
            Index = Index + 1
        End If
    ElseIf KeyAscii = vbKeyBack Then
        Text2(Index).Text = ""
        If Index > Text2.LBound Then
            Index = Index - 1
        End If
    Else
        KeyAscii = 0
    End If
    
    Text2(Index).SetFocus
    Text2(Index).SelStart = 0
    Text2(Index).SelLength = Len(Text2(Index).Text)
End Sub
zhy934453950 2014-06-17
  • 打赏
  • 举报
回复
引用 4 楼 of123 的回复:
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case KeyAscii
Case 8
KeyAscii = 0
If Len(Text1(Index).Text) > 0 Then
Text1(Index).Text = Left(Text1(Index).Text, Len(Text1(Index).Text) - 1)
Text1(Index).SelStart = Len(Text1(Index).Text)
Else
If Index > 0 Then
Text1(Index - 1).SetFocus
Text1(Index - 1).SelStart = Len(Text1(Index - 1).Text)
Text1(Index - 1).SelLength = 0
End If
End If
End Select
End Sub
跳格怎么不稳定啊??删除一个文本框,不向后跳,而是先向前跳个文本框在回跳
回去。。。。见图



of123 2014-06-17
  • 打赏
  • 举报
回复
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
    Select Case KeyAscii
        Case 8
        KeyAscii = 0
            If Len(Text1(Index).Text) > 0 Then
                Text1(Index).Text = Left(Text1(Index).Text, Len(Text1(Index).Text) - 1)
                Text1(Index).SelStart = Len(Text1(Index).Text)
            Else
                If Index > 0 Then
                    Text1(Index - 1).SetFocus
                    Text1(Index - 1).SelStart = Len(Text1(Index - 1).Text)
                    Text1(Index - 1).SelLength = 0
                End If
            End If
    End Select
End Sub
无·法 2014-06-17
  • 打赏
  • 举报
回复
在case 8这个下面实现功能。

'方法1,具体删除字符交给系统
if text1(index)="" then
   text1(index-1).selstart=len(text1(index-1).)
   text1(index-1).setfocus
end if

'方法2,直接删除
  text1(index-1).=""
  text1(index-1).setfocus
注意判断处理索引越界
threenewbee 2014-06-16
  • 打赏
  • 举报
回复
最简单的办法是设置好正确的TabIndex 然后用SendKeys发送 Shift+Tab
zhy934453950 2014-06-16
  • 打赏
  • 举报
回复
求解啊,现在要删除字符,只能选一个文本框,按一下退格,我想,按住直接可以跨文本框退格,不需要在手工选定了

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧