加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB和VB.NET 文本框的输入控制

发布时间:2020-12-16 23:22:02 所属栏目:大数据 来源:网络整理
导读:有时候为了某种需求,要控制用户的输入。可以通过控制输入法状态 或 输入按键来控制。 以下介绍通过对输入按键控制输入 VB6.0 SAMPLE '只能允许输入数字和字母 Private Sub Text1_KeyPress(KeyAscii As Integer) MsgBox KeyAscii '查看按下键的ASCII码 Selec

有时候为了某种需求,要控制用户的输入。可以通过控制输入法状态 或 输入按键来控制。

以下介绍通过对输入按键控制输入

VB6.0 SAMPLE

'只能允许输入数字和字母

Private Sub Text1_KeyPress(KeyAscii As Integer)
    MsgBox KeyAscii  '查看按下键的ASCII码
    Select Case KeyAscii
        Case 48 To 57  '数字
        Case 65 To 90  '字母大写
        Case 97 To 122 '字母小写
        Case 13
            SendKeys "{tab}"
        Case Else
            KeyAscii = 0   '无效按键
    End Select
End Sub

'VB.NET SAMPLE

'' 按回车键相当于Tab 键

    Private Sub txtPassword_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPassword.KeyPress
        'MsgBox(e.KeyChar)  '查看按下键的字符
        If e.KeyChar = Chr(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{Tab}")
        End If
    End Sub

VB.NET 通过以下步骤来确保用户输入数据的正确性:
只能输入整数:
首先添加好文本框控件TextBox后把属性
IMEMode的值改成Disable,这样在该文本框中就不能使用中文输入法了。然后对文本框的KeyPress事件添加以下代码

Private Sub TextBox1_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
     If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then
         e.Handled = False
     Else
         e.Handled = True
     End If
End Sub
 
 

其中e.KeyChar是键盘输入的键对应的字符,IsDigit函数可以判断是否为0到9的数字,Chr(8)为退格键,当e.Handled为True时,程序认为该KeyPress事件已经被处理过了,文本框的内容也就不会发生变化了。从以上程序中不难看出,此时文本框只能接受数字和退格键,也就是说这个文本框是用来输入整数的。

输入为非负的数值(可输入小数):

如果文本需要输入小数的话,就要能够输入小数点".",而且小数点只能输入一次,此时可以将上面的函数改为下面的格式:

Private Sub TextBox1_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
     If Char.IsDigit(e.KeyChar) or e.KeyChar = Chr(8) or e.KeyChar = "." Then
         If e.KeyChar = "." And InStr(TextBox1.Text,".") > 0 Then
             e.Handled = True
         Else
             e.Handled = False
         End If
     Else
         e.Handled = True
     End If
End Sub

其中函数InStr返回指定字符在字符串中的位置,当字符串中不含此字符时,返回一个负数。这时文本框可以用来输入正整数及小数。


输入为数值(含小数和负数)

如果文本需要输入负数的话,就要能够输入负号"-",而且只能是文本框输入的第一个字符,此时又可以将上面的函数改为下面的格式:


Private Sub TextBox1_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress

        Dim ObjText As TextBox = sender

        If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then   '整数和退格控制(可输入)
            e.Handled = False
        Else
            If e.KeyChar = "." AndAlso InStr(ObjText.Text,".") <= 0 Then    '输入小数点控制
                e.Handled = False
            ElseIf e.KeyChar = "-" AndAlso InStr(ObjText.Text,"-") <= 0 AndAlso ObjText.SelectionStart = 0 Then    '输入负号控制(负号只能输入的最前面)
                e.Handled = False
            Else
                '其他字符全部禁止输入
                e.Handled = True
            End If
        End If

End Sub



这时文本框可以用来输入正的或负的整数及小数。

当有多个文本框需要做输入限制时,可以在以上代码Handles后面加上多个文本框的KeyPress事件,各事件之间用逗号隔开,例如
Private Sub TextBox1_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress,Textbox2.KeyPress,Textbox3.KeyPress
对于要判断文本框内容的函数,就要把代码进行修改,使其能够同时处理多个文本框,也就是把上面后两段程序中的TextBox1.Text改为CType(sender,TextBox).Text,这样一来就能够对号入座了,比如上面能够输入负号的代码就可以改成:

Private Sub TextBox1_KeyPress(ByVal sender As Object,Textbox3.KeyPress
        Dim ObjText As TextBox = sender

        If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then   '整数和退格控制(可输入)
            e.Handled = False
        Else
            If e.KeyChar = "." AndAlso InStr(ObjText.Text,"-") <= 0 AndAlso ObjText.SelectionStart = 0 Then    '输入负号控制
                e.Handled = False
            Else
                '其他字符全部禁止输入
                e.Handled = True
            End If
        End If
End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读