Module和Class的区别

模块可以用来分类存放函数、过程和相关变量等,而类当然是用来存放类的代码的,类可以在任何时候用new关键词将其实体化为对象以进行操作。当你仅仅是为了编写一个全局的过程、函数甚至是常量时,就该用module,而要编写类的时候就必需将代码放在class中。 类和模块,类中的方法可以是静态的,也可以是动态实例的。模块中的东西基本上都是静态的,使用时通常不需要生成一个实例来访问,另外定义的PUBLIC变量应该是全程的。

模块可以使用,但是应该尽量少用,例如仅仅使用 sub Main() 来启动程序而已,通常应该写成类。

模块可以认为是受限制的类,它们的所有成员都是共享的,永远不能实例化,不支持继承,不能实现接口。

module: 只能控件内部调用 class:可以做开放接口使用

另外,如果在类中声明 Main 过程,则必须使用 Shared 关键字。在模块中,Main 不必是 Shared。

为什么VB.NET中会有一个Module的东西,而在C#等语言中是没有的呢?

首先,这是一个历史原因。早先的VB语言都有模块和类模块的概念。所谓模块一般就是存放公用的一些方法(Sub)或者函数(Function),而类模块,相当于就是我们经常所说的类的概念。

模块(Module)里面可以直接有方法,这些方法自动就是静态的(或者称为共享的——VB.NET中的关键字是Shared),这些方法可以直接调用,所以Module是无法实例化,也没有必要实例化的。

模块无法继承,也无法实现接口。

模块里面可以有类,但其实这个类并不需要真的通过模块作为前缀来引用。所以模块有点虚的概念

模块可以被组织到命名空间中去,因为模块其实是个虚的,所以它的方法也可以直接外层的命名空间调用

Property

 Private name As String
    Public Property _name As String
        Get
            Return Me.name
        End Get
        Set(value As String)
            Me.name = value
        End Set
    End Property

    Private age As Integer
    Public Property _age As Integer
        Get
            Return Me.age
        End Get
        Set(value As Integer)
            Me.age = value
        End Set
    End Property
复制代码

限制文本框只能输入数字

vb.net限制文本框只能输入数字 CSDN

只允许数字和退格

添加好文本框控件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事件已经被处理过了,文本框的内容也就不会发生变化了。