说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

大家帮忙看一下这一小段代码

编辑:说三道四文库 发布时间:2018-04-21 02:25
HTML文档下载 WORD文档下载 PDF文档下载
希望控制text1中只能输入数字0-9,
Private Sub text1_keypress(KeyAscii As Integer)
    Dim bOK As Boolean
    If KeyAscii>=Asc("0") And KeyAscii<=Asc("9") Then
        bOK=Val(text1&Chr(KeyAscii))<1 or Val(text1&Chr(KeyAscii))>10
        if bOK Then
            Msgbox "Error"
        End If
    End If
End Sub
================================================
搞不明白的地方是"Val(text1&Chr(KeyAscii))",请高手解答,为什么不可以直接用"Val(Chr(KeyAscii))"
加了这一句
bOK=Val(text1&Chr(KeyAscii))<1 or Val(text1&Chr(KeyAscii))>10
如果输入的值与文本框组合成的数字小于1或大于10的时候就报错.
Select Case KeyAscii
    Case Asc("0") to Asc("9")
    Case Esle
         MsgBox "Error"
         KeyAscii=0'吃掉它
End Select
搞不明白的地方是"Val(text1&Chr(KeyAscii))",请高手解答,为什么不可以直接用"Val(Chr(KeyAscii))"

因为发生KeyPress事件时还没有将KeyAscii加到Text上,如果这个时候将KeyAscii设为0,那么就等于用户没有输入了。

上面的代码开始理解错误,并不是你要的功能。
还是有点不明白,
发生KeyPress事件时还没有将KeyAscii加到Text上是什么意思?
那如果我用鼠标先将text1中的内容先选中,然后再输入数值会怎么样呢?
Val(text1&Chr(KeyAscii))这样写是为了说明这个文本矿中只能输入1~10之间的数字。

发生KeyPress事件时还没有将KeyAscii加到Text上是什么意思?
-----------------------------------------------------
就是这个时候你打进去的字符还没有被显示到控件中。在keypress事件中被截获了,因为需要对他进行筛选,只有符合条件的字符允许被显示到控件中.
那如果我用鼠标先将text1中的内容先选中,然后再输入数值会怎么样呢?
-------------------------------------------------------------
效果一样。
那如果我的text1的默认值是5,那我在text1中输入1,
结果Val(text1&Chr(KeyAscii))的值是不是等于51?
结贴
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘