VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • VB.NET-轻松判断文本框是否为空,一键清空文本框内容

房收费系统的时候,令人相当恶心的一件事就是判断文本框和组合框是否为空还有清空文本框。基本上每个窗体都要进行判断,那一个接着一个的If...Else...语句,长长一串,看着就头疼,但是第一次做机房收费系统的时候竟然傻傻的一个不落都写了出来。真佩服当时的自己,不过这一次还是不要在做那种傻事了,因为我们经历了不少面向对象的洗礼,认识了抽象。

         向对象的范畴里,对于相同的或者类似的代码只要重复3次以上我们应该想到面向对象的三大特性之一:抽象。想是想到了但是具体怎么通过抽象和封装来简化繁琐的判断任务呢?

. 首先新建一个模块,在UI层右键-添加-新建项-选择 Model

              

2. 然后在Model中定义一个结构体Term,且定义一个term类型的结构体数组

          构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。和基础数据类型Int,Char一样,可以把它定义成自己需要的数据类型。 详情请百度一下。


  1.  
    <span style="font-size:18px;"> '定义结构体Term
  2.  
    Public Structure Term
  3.  
    Dim controlSub As Control
  4.  
    Dim strText As String
  5.  
    Sub New(ByVal controlSub As Control, ByVal strText As String)
  6.  
    With Me
  7.  
    .controlSub = controlSub
  8.  
    .strText = strText
  9.  
    End With
  10.  
    End Sub
  11.  
    End Structure
  12.  
     
  13.  
    '定义一个term类型的结构体数组
  14.  
    Public arrayControl() As Term
  15.  
    </span>

. 然后我们就可以在需要的窗体下定义一个过程Rdim() 作用是初始化这个Trem类型的结构体数组。


  1.  
    <span style="font-size:18px;">Private Sub Rdim()
  2.  
     
  3.  
    ReDim Preserve arrayControl(9) '重定义数组维数
  4.  
     
  5.  
    '初始化数组
  6.  
    arrayControl(0) = New Term(txtCID, "卡号")
  7.  
    arrayControl(1) = New Term(txtBalance, "充值金额")
  8.  
    arrayControl(2) = New Term(txtSID, "学号")
  9.  
    arrayControl(3) = New Term(txtName, "姓名")
  10.  
    arrayControl(4) = New Term(cmbsex, "性别")
  11.  
    arrayControl(5) = New Term(txtDepartment, "系别")
  12.  
    arrayControl(6) = New Term(cmbGrade, "年级")
  13.  
    arrayControl(7) = New Term(txtClass, "班级")
  14.  
    arrayControl(8) = New Term(cmbType, "类型")
  15.  
    arrayControl(9) = New Term(cmbstatus, "卡的状态")
  16.  
    End Sub
  17.  
    </span>

 

. 然后该函数了,先说IsEmptyText()函数,作用是判断文本框、组合框的内容是否为空,为空的话给出相应的提示。它同样写在Model


  1.  
    ''' <summary>
  2.  
    ''' 判断数组中控件的Text属性是否为空,并给出相应提示
  3.  
    ''' </summary>
  4.  
    ''' <param name="arrayControl">需要遍历的结构体数组</param>
  5.  
    ''' <returns>返回Boolean值,true表示为空,false表示不为空</returns>
  6.  
    Public Function CheckIsEmpty(ByVal arrayControl() As Term) As Boolean
  7.  
    Dim termControl As Term '声明一个Term类型变量termControl
  8.  
     
  9.  
    '遍历结构体数组中的所有元素,如果控件文本为空,则进行相应提示
  10.  
    For Each termControl In arrayControl '遍历结构体数组中所有元素
  11.  
    If TypeOf termControl.controlSub Is TextBox Then '判断控件是否为文本框
  12.  
    If termControl.controlSub.Text.Trim = "" Then '判断文本框内容是否为空
  13.  
    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  14.  
    termControl.controlSub.Focus() '为空控件得到焦点
  15.  
    Return True
  16.  
    Exit Function
  17.  
    End If
  18.  
    ElseIf TypeOf termControl.controlSub Is ComboBox Then '判断控件是否为组合框
  19.  
    If termControl.controlSub.Text.Trim = "" Then '判断组合框内容是否为空
  20.  
    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  21.  
    termControl.controlSub.Focus() '为空控件得到焦点
  22.  
    Return True
  23.  
    Exit Function
  24.  
    End If
  25.  
    End If
  26.  
    Next
  27.  
    Return False
  28.  
    End Function

 

. 一键清除文本框内容的函数,在Model中添加函数AllEmpty()


  1.  
    ''' <summary>
  2.  
    ''' 清空窗体中所有文本框、组合框的Text
  3.  
    ''' </summary>
  4.  
    ''' <param name="arrayControl">需要遍历的结构体数组</param>
  5.  
    ''' <returns>返回布尔值,True</returns>
  6.  
    ''' <remarks></remarks>
  7.  
    Public Function AllEmpty(ByVal arrayControl() As Term) As Boolean
  8.  
    Dim termControl As Term '声明一个Term类型变量termControl
  9.  
     
  10.  
    '遍历结构体数组中的所有元素,清空其Text属性
  11.  
    For Each termControl In arrayControl '遍历结构体数组中所有元素
  12.  
     
  13.  
    If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then
  14.  
    termControl.controlSub.Text = "" '如果是文本框或组合框则清空
  15.  
    End If
  16.  
    Next
  17.  
    Return True
  18.  
    End Function 

 

. 上面说明了这么多,现在到调用的时候了。

检查是否为空:


  1.  
    Private Sub btnEmpty_Click(sender As Object, e As EventArgs) Handles btnEmpty.Click
  2.  
    Call Rdim()   ’首先调用Rdim过程进行数组初始化
  3.  
    '再调用IsEmptyText()函数,检测是否输入文本内容
  4.  
    If CheckIsEmpty(arrayControl) Then
  5.  
    Exit Sub
  6.  
    End If
  7.  
    End Sub

一键清空:


  1.  
    Private Sub btnEmpty_Click(sender As Object, e As EventArgs) Handles btnEmpty.Click
  2.  
    Call Rdim()   ’首先调用Rdim过程进行数组初始化
  3.  
    '调用清空函数,把窗体中控件的文本清空
  4.  
    If AllEmpty(arrayControl) Then
  5.  
    Exit Sub
  6.  
    End If
  7.  
    End Sub
 

其他窗体应用该函数的时候只需要定义一个过程Rdim() 初始化Trem类型的结构体数组,再调用函数即可。

非常方便!随着学习,正在逐渐的触摸到面向对象思想所带来的好处。

 

(PS:不当的地方,恳请指出!)


相关教程