Vb.net web控件---数字控件

来源:互联网 发布:电脑格式软件格式 编辑:程序博客网 时间:2024/06/09 22:02

实现功能:
       对文本框输入的只能数字.
实现分析:
       在网页中(asp)我们比较熟悉的,对文本框输入验证是通过java来实现
       对input的KeyPress,Keydown,KeyUp事件来处理.
      首先我们可以建一个html 文件,加入一个Input text 来实现这个功能.
我采用KeyPress事件所用的Java代码为:

我采用KeyPress事件所用的Java代码为:
function numbereditor_keypress(e)
{
var newkeypress=event.keyCode;//这里应该要先赋值吧,不然直接试用if在我个人电脑测试通不过.
if(newkeypress>48 && newkeypress<57)
{
return true; //是数字 可以输入  返回true
}
else
{
//event.keyCode="";
return false;
}
}


在.net中,我们只要对textbox的输入进行判断,可以采用textbox的attribute功能来添加一个onkeypress事件.
程序完整代码和注释:
Imports System
Imports System.Text
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Web.UI

<DefaultProperty("Text"), ToolboxData("<{0}:numbereditor runat=server></{0}:numbereditor>")> Public Class NumberEditor
    Inherits System.Web.UI.WebControls.TextBox
    REM 声明javascript 函数 唯一  多次试用只输出一个javascirpt function
    Private Const SCP_NUMBER_ONLYSCRIPT_ID As String = "{31E7D9A24-82DB-5AF3-DADE-7D0B782C-23A43}"
    REM javascript 函数
    Private Const SCP_NUMBER_ONLY_SCRIPT As String = "<Script language=""Javascript"" >" + vbCrLf + "function numbereditor_keypress(e) " + vbCrLf + "{" + vbCrLf + "var newkeypress=event.keyCode;" + vbCrLf + " if(newkeypress==13)" + vbCrLf + "return true;" + vbCrLf + "if(newkeypress<48 || newkeypress>57)" + vbCrLf + "return false;" + vbCrLf + "else" + vbCrLf + "return true;" + vbCrLf + "}" + vbCrLf + "</script>"  

    Private Const SCP_NUMBER_ONLY_HOOK As String = "return numbereditor_keypress(this);"  ’后面的onkeypress调用,可以后面直接试用不声明.:)

    Dim _text As integer=0 '默认值,当text值为数字时,初始化值需要.
    Private _Length As Integer = 18  '设置这个的目的是 改变默认的长度最大值,呵呵不弄也可以.
#Region "重写text属性,把所有的非数字的赋值,全部转化为数字型.tostring"
    <Bindable(False), Category("Appearance"), DefaultValue(0)> Shadow Property [Text]() As integer
        Get     
            Return _text
        End Get

        Set(ByVal Value As integer)
            Try
                _text = value
                  '先转化为double再转化为int,直接转化遇到字母等会产生exception
            Catch
                _text = 0
            End Try

        End Set
    End Property
#end region
#Region  "重写最大长度--去掉也可"
    <Bindable(False), Category("Appearance"), DefaultValue(20)> Overrides Property [MaxLength]() As Integer
        Get
            Return _Length
        End Get

        Set(ByVal Value As Integer)
            Try
                _Length = Value
            Catch
                _Length = 18
            End Try
        End Set
    End Property
#end region
#region "Javascript代码的输出,并保证当页面多个该控件时,javascript funtion的唯一性"
    Private Sub outputJavascript()
        If (Not Page.IsClientScriptBlockRegistered(SCP_NUMBER_ONLYSCRIPT_ID)) Then
            REM 强制ID为整个控件的ID
            Me.Page.RegisterClientScriptBlock(SCP_NUMBER_ONLYSCRIPT_ID, SCP_NUMBER_ONLY_SCRIPT)
        End If
    End Sub
#end region
    Protected Overrides Sub AddAttributesToRender(ByVal writer As HtmlTextWriter)
        MyBase.AddAttributesToRender(writer)
        writer.AddAttribute("OnKeyPress", Me.SCP_NUMBER_ONLY_HOOK)  
'输出 增加attribute  
    End Sub
    Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
        MyBase.OnPreRender(e)
        outputJavascript() '输出前确定javascript function 的输出
    End Sub

End Class

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 亚马逊账号申诉后余额怎么办 怎么办北京市工会会员互助服务卡 国家发改委录用公示后怎么办 慕课的账号忘了怎么办 清华同方无线鼠标没反应怎么办 全日制专硕考上公务员了怎么办 超出了期刊编辑部审稿时间怎么办 教师晋职称毕业证丢了怎么办 下属部门一直不交材料怎么办 简书投稿被拒绝怎么办 论文引用文献为0怎么办 小米屏幕录制卸载了怎么办 用edius剪的视频卡顿怎么办 微店手机号换号登不进去了怎么办 微信加人被限制怎么办 微信与电脑同步怎么办 微信号盗了红包怎么办 微信被别人登录冻结了怎么办? 微信账号被冻结了怎么办 我微信冻结了怎么办 微信账号冻结了怎么办 微信被冻结里面的钱怎么办 微信账户冻结了怎么办 微信公众号忘记密码怎么办 网课没有刷完怎么办 形势与政策挂了怎么办 苹果录屏声音小怎么办 老师跟学生家长吵起来了怎么办 蓝幕拍摄抠像有蓝色怎么办 学东西悟性不高怎么办 微商不会写笔记怎么办 布鞋买大了一码怎么办 凉鞋买大了一码怎么办 皮鞋小了一码怎么办妙招 图书馆借的书本损坏了怎么办 把人打伤没钱赔怎么办 小孩不小心打伤了老师怎么办 高考进了三段怎么办 工作中和领导产生冲突怎么办 酒店不给员工发工资怎么办 裙子没有解开超市的锁怎么办