标题:自定义输入数字的TextBox
只看楼主
xyj_j
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-15
 问题点数:0 回复次数:0 
自定义输入数字的TextBox
本人是新手,最近学习用做一个小系统。却发现没有Access 中那样只输入数字的文本框,感到很不方便。便想做一个自定义控件,于是在网上找,终于找到一个自认为比较好的方法。先分享给大家,同时希望高手加以指点。

VS2010

新建项目==>VB windows模板中选择==》Windows窗体控件库==》UserControl1.vb窗体(不要管他,在此项目中新建一个类 NumTextBox)代码如下

Public Class NumericTextBox
    Inherits TextBox ‘从TextBox 继承
    '重写KeyPress事件

    Protected Overrides Sub OnKeyPress(ByVal e As KeyPressEventArgs)
        MyBase.OnKeyPress(e)

        If Char.IsDigit(e.KeyChar) Or e.KeyChar = vbBack Or allowDicemal() Then
            e.Handled = False
        Else
            e.Handled = True
        End If

    End Sub

    ' 重写Leave事件,变为有效数字
    Protected Overrides Sub OnLeave(ByVal e As System.EventArgs)
        MyBase.OnLeave(e)
        If Trim(Me.Text) = "" Then                    '如果为空,仍显示空
            Me.Text = ""
        Else
            Me.Text = Val(Me.Text).ToString         '不为空,显示有效数字形式。
        End If

    End Sub


    Function allowDicemal() As Boolean
        If Trim(Me.Text.Length) = 0 Then  '首个字符为“.”无效
            Return False
            Exit Function
        Else                            '字符串中已有"."无效
            Dim chr() As Char
            chr = Me.Text.ToCharArray
            For i = 0 To Me.Text.Length - 1
                If Asc(chr(i)) = 46 Then
                    Return False
                    Exit For
                    Exit Function
                End If
            Next
        End If
        Return True
    End Function

End Class

编译生成一个DLL文件,(Dll文件的好处我就不说了)。

使用方法:在设计模式窗体中==》右击“工具箱”==》选择“选择项”==》.NetFramework 页面下的“浏览”找到刚生成的DLL文件。这是工具箱上便出现了两个控件,其中一个是UserControl1(这个我还没闹明白),另一个就是NumTextBox控件了。
搜索更多相关主题的帖子: 网上 文本框 项目 windows Windows 
2015-12-01 11:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459780-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051773 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved