330218654吧 关注:1贴子:155
  • 12回复贴,共1

【生命编程】VB 屏蔽方向键

只看楼主收藏回复



IP属地:山东来自Android客户端1楼2013-10-19 00:15回复
    最近自学vb 发现了这个问题:首先 我建立了个文本框,然后我希望这个文本框了只允许输入数字,我在keypress事件里输入代码
    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    End If
    End Sub
    然后我试了下,除了0-9的其他字母键都按了无效了,正当我高兴的时候,我的右手不小心按到一个位置,这个位置让我发现了问题,这个位置就是 方向键 为什么 已经限定了只允许输入0-9,为什么方向键依旧有效?方向键的ASCII值 不是已经被 if排除了吗??!!然后我又试验了其他按键,发现,del键 也是可以使用的,
    现在问题是:有什么办法可以屏蔽 键盘上的方向键,比如 我希望一个文本框 只允许按键盘上的0-9,除了0-9 其他一切按键都无效 keydown 试验了,无法屏蔽掉方向键


    IP属地:山东来自Android客户端2楼2013-10-19 00:16
    回复
      text中不是有maxlength属性吗?实在不行就用lenb返回字节数来判断。


      IP属地:山东来自Android客户端3楼2013-10-19 00:16
      回复
        方向键、删除键都没有KeyAscii值,所以无法屏蔽


        IP属地:山东来自Android客户端4楼2013-10-19 00:16
        回复
          我找了下方向键和其他的是不同的,
          方向键(←): VK_LEFT (37)
          方向键(↑): VK_UP (38)
          方向键(→): VK_RIGHT (39)
          方向键(↓): VK_DOWN (40)
          这是方向键的ascii码。
          所以应该再把这4个单独的排除掉。


          IP属地:山东来自Android客户端5楼2013-10-19 00:16
          回复
            <48不是已经把这4个包括进去了吗 还要 再单独排除一次吗?


            IP属地:山东来自Android客户端6楼2013-10-19 00:17
            回复
              回复 If KeyAscii 不包括这4个方向键的啊


              IP属地:山东来自Android客户端7楼2013-10-19 00:17
              回复
                用 isnumeric chr来判断看看了 应该只有0-9能过


                IP属地:山东来自Android客户端8楼2013-10-19 00:17
                回复
                  Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
                  If KeyCode = vbKeyLeft Or KeyCode = vbKeyRight Or KeyCode = vbKeyUp Or KeyCode = vbKeyDown Then
                  KeyCode = 0
                  End If
                  End Sub


                  IP属地:山东来自Android客户端9楼2013-10-19 00:18
                  回复
                    验证成功,万分感谢 原来是 我少写了 KeyCode = 0,这句


                    IP属地:山东来自Android客户端10楼2013-10-19 00:18
                    回复
                      很明显楼主没搞清楚 ascii 和 keycode的区别


                      IP属地:山东来自Android客户端11楼2013-10-19 00:18
                      回复
                        把TextBox的Wndproc重写,不处理特定键值的按键消息。


                        IP属地:山东来自Android客户端12楼2013-10-19 00:19
                        回复
                          [汗] 方法错了。keydown


                          IP属地:山东来自Android客户端13楼2013-10-19 00:19
                          回复