当前位置:编程学习 > VB >>

关于TEXT控件

我想在TEXT.TEXT中只输入数子(包括小数点后两位含小数点)怎么写代码? --------------------编程问答-------------------- 2个方式:
1. 找个别的控件。
2. 自己在Change事件中写控制,每次改变的时候,如果不为数字就清除,即恢复修改前的原来的数字。 --------------------编程问答-------------------- Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 46 And Not (KeyAscii >= 48 And KeyAscii <= 57) Then
    KeyAscii = 0
End If
End Sub --------------------编程问答-------------------- 还有就是禁止输入空格,又是什么代码呢?
--------------------编程问答-------------------- 我按照2楼的方式做发现有两个问题:
1,小数点可以输入很多,我只想输入一个就可以了;
2,我不能用去格(bk sp)键删除.
怎么办?
--------------------编程问答--------------------
private sub text1_lostfocus
    if trim(text1.text)<>"" then
        if not isnumeric(text1.text) then
            msgbox "请输入数值型数据!",48,"提示"
            text1.setfocus
        end if
    end if
end sub
--------------------编程问答--------------------
引用 4 楼 lost_heaven 的回复:
我按照2楼的方式做发现有两个问题:
1,小数点可以输入很多,我只想输入一个就可以了;
2,我不能用去格(bk sp)键删除.
怎么办?

那就用#5楼的方法吧 --------------------编程问答--------------------

Private Sub Text1_Change()
        With Text1
            If InStr(1, StrReverse(.Text), ".") >= 4 Then
                SendKeys "{BACKSPACE}"
            End If
        End With
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
        With Text1
            If KeyAscii = 46 Or (KeyAscii >= 48 And KeyAscii <= 57) Then
                If Len(Trim(.Text)) <> 0 Then
                    If InStr(1, StrReverse(.Text), ".") > 0 And KeyAscii = 46 Then
                        KeyAscii = 0
                    End If
                End If
            End If
        End With
End Sub
--------------------编程问答-------------------- Private Sub Text1_KeyPress(KeyAscii As Integer)
    
    '// Check "."
    If (KeyAscii = 46) Then
        '// Ensure only one "."
        If (InStr(1, Text1.Text, Chr(KeyAscii)) > 0) Then
            KeyAscii = 0
        End If
        Exit Sub
    End If
    
    '// Check number "0-9"
    If (KeyAscii >= 48 And KeyAscii <= 57) Then
        Exit Sub
    End If
    
    '// Check Backspace key
    If (KeyAscii = 8) Then
        Exit Sub
    End If
    
    KeyAscii = 0
End Sub --------------------编程问答-------------------- Private Sub text_KeyPress(KeyAscii As Integer)
    Call Number(KeyAscii)
End Sub

Public Sub Number(KeyAscii As Integer)
    Dim strValid As String
    strValid = "0123456789."
End Sub

我们的现在就是这么做的。 --------------------编程问答-------------------- 你还要注意这几个情况:
1. 第一个输入为"."
2. 删除"."前面所有的
3. 第一个为"0"(包括在小数点下面的) --------------------编程问答-------------------- 以上三种情况下的显示方式。 --------------------编程问答-------------------- Private Sub Text1_KeyPress(KeyAscii As Integer)

Select Case KeyAscii
    Case 8, 9 13, &H30 To &H 39
    Case Asc(".")
        If InStr(Text1, ".") Then KeyAscii = 0
    Case Else
        KeyAscii = 0
End Select

End Sub --------------------编程问答-------------------- 在Change事件中检测受到的当前字符是不是数字,不是就把它去掉。
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,