注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

JonRao的博客

PC游戏 VB.NET PC技巧 硬盘维修

 
 
 

日志

 
 

转:VB.net中 使文本框只能输入数字  

2010-02-21 12:53:00|  分类: VB.NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 编制计算类程序时文本框一般都用于输入数字数据,此时可以通过以下步骤来确保用户输入数据的正确性:


首先添加好文本框控件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

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


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


    Private Sub text1_keypress(ByVal keyascii As Integer)

        Select Case keyascii

            Case 8, 9, 13, &H30 To &H39, asc("A") To asc("Z"), asc("a") To asc("z")

            Case Else

                keyascii = 0

        End Select

    End Sub




Keypress是当键盘按下时触发,Change是在文本框中的字符串变化时触发


Keypress要比change先触发

而且keypress可以用来判断一些非可见字符,如:回车 ch(13)


    Private Sub txtSource_KeyPress(ByVal KeyAscii As Integer)

if keyascii=13 then ..........(判断在textbox里是否按下回车键)

    End Sub


keypress在调试的时候比较麻烦,注意一下


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Private Sub ButtonItem15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonItem15.Click

        If Me.fDate.TextBox.Text.ToString = "" Then

            Me.ErrorProvider1.SetError(Me.fDate.TextBox, "输入天数")

        Else

            Dim sqlDate As Date

            Dim intDate As Integer = "-" + Me.fDate.TextBox.Text.ToString

            sqlDate = DateAdd("d", intDate, Now.Date)

            'MsgBox(sqlDate)

            strSql = "select * from business where shijian <= #" + sqlDate + "#"

            MsgBox(strSql)

            bindv2(strSql)


        End If


    End Sub




本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linbaotong/archive/2008/09/17/2939013.aspx

  评论这张
 
阅读(433)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017