zoukankan      html  css  js  c++  java
  • 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

            If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then

                    If e.KeyChar = "." And InStr(TextBox1.Text, ".") >0 Then

                             e.Handled = True

                     Else

                             e.Handled = False

                    End If

             ElseIf e.KeyChar = "-" And TextBox1.Text = "" Then

                      e.Handled = False

            Else

                      e.Handled = True

              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, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress,Textbox2.KeyPress,Textbox3.KeyPress

              If Char.IsDigit(e.KeyChar) Or e.KeyChar = "." Or e.KeyChar = Chr(8) Then

                       If e.KeyChar = "." And InStr(CType(sender, TextBox).Text, ".") >0 Then

                                e.Handled = True

                       Else

                                e.Handled = False

                       End If

              ElseIf e.KeyChar = "-" And CType(sender, TextBox).Text = "" Then

                      e.Handled = False

              Else

                      e.Handled = True

              End If

    End Sub

    这样一来四个文本框就都只能输入正的或负的整数及小数了。

  • 相关阅读:
    C++雾中风景14:CRTP, 模板的黑魔法
    ClickHouse源码笔记1:聚合函数的实现
    C++雾中风景番外篇4:GCC升级二三事
    C++雾中风景13:volatile解惑
    AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读
    Linux 程序设计1:深入浅出 Linux 共享内存
    C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
    C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试
    C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
    用TensorFlow搭建一个万能的神经网络框架(持续更新)
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9664008.html
Copyright © 2011-2022 走看看