以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  文本框控件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95724)

--  作者:281512373
--  发布时间:2017/2/3 22:30:00
--  文本框控件
用上下左右方向键移动,怎么弄呀?
--  作者:有点蓝
--  发布时间:2017/2/3 22:36:00
--  
移动控件?ctrl+方向键
--  作者:281512373
--  发布时间:2017/2/3 22:39:00
--  
移动光标 方便输入
--  作者:281512373
--  发布时间:2017/2/3 22:42:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170203224058.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2017/2/3 23:07:00
--  
为了减少代码和逻辑操作,首先你的控件的排位和命名要有规律,如图

图片点击可在新窗口打开查看此主题相关图片如下:无标题.gif
图片点击可在新窗口打开查看

然后窗口设置KeyDown事件如下:

If Typeof e.Sender Is  WinForm.TextBox Then
    
    Dim Index As Integer = CInt(e.Sender.Name.Replace("TextBox",""))
    Select Case e.KeyCode
        Case keys.Down
            e.Cancel = True
            If Index <> 3 AndAlso Index <> 6 Then e.Form.Controls("TextBox" & (Index+1)).Select
        Case keys.Left
            e.Cancel = True
            If Index > 3 Then e.Form.Controls("TextBox" & (Index-3)).Select
        Case keys.Right
            e.Cancel = True
            If Index <= 3 Then e.Form.Controls("TextBox" & (Index+3)).Select
        Case keys.Up
            e.Cancel = True
            If Index <> 1 AndAlso Index <> 4 Then e.Form.Controls("TextBox" & (Index-1)).Select
    End Select
End If
[此贴子已经被作者于2017/2/3 23:09:33编辑过]

--  作者:281512373
--  发布时间:2017/2/5 14:36:00
--  
嗯谢谢可以  2列文本框 没问题  要是我有5列 应该怎么改

好像找到答案了 用 AndAlso 就可以了
[此贴子已经被作者于2017/2/5 14:41:10编辑过]

--  作者:有点色
--  发布时间:2017/2/5 14:54:00
--  
排列整齐,命名按规则,按下对应键,从当前文本框跳到对应数字的文本框,即可。
--  作者:281512373
--  发布时间:2017/2/5 15:09:00
--  
嗯 OrElse 判断多列就可以了

我还想加一个 当大于 TextBox9  的时候  按下up和Left 直接跳到 TextBox1

--  作者:有点色
--  发布时间:2017/2/5 15:12:00
--  

加上判断

 

If index >= 9 Then

 

End If

[此贴子已经被作者于2017/2/5 15:12:24编辑过]