VB.NET 用循环判断文本框是否为空

第一次敲机房的时候,有很多窗体中都有清空文本框或组合框中内容功能,当时用了循环来做。现在第二次机房重构,发现判断文本框、组合框内容是否为空也可以用循环。其实这些功能最直接的方法就是一个一个的判断,不过这样代码基本上是重复的,这应该就是编程中的“坏味道”吧。我们并不是敲代码的机器,应该试着去尝试一些简单快速有效的方法

在网上查了一些方法,有一种是监理textBox文本框的控件数组,来循环判断,总觉得数组的命名跟咱们的机房有些问题,于是又发现了一个更好的方法

下面就具体介绍一下如何用循环来判断文本框是否为空以及清空文本。

1.新建CheckModel模块。(右击U层——添加——新建项,在弹出的对话框中继续选择即可添加


2.在新建的模块中定义结构体Term,并定义Term类型的结构体数组。(关于结构体http://baike.baidu.com/link?url=16VDWHvVeIsVSfICL4zaEcqIbLieYSp_Y6LzeCgRt77pJ_Ic0DyUJIg8r9BaT6RWCsDs7GvV0TvcB0SOhhTS5_

    '定义结构体
    Public Structure Term
        Dim controlSub As Control
        Dim strText As String
        Sub New(ByVal controlSub As Control,ByVal strText As String)
            With Me
                .controlSub = controlSub
                .strText = strText
            End With
        End Sub
    End Structure
    '定义Term类型的结构体数组
    Public arrayControl() As Term

3.以注册窗体为例,在frmRegister窗体中定义过程Rdim(),用来初始化Term类型结构体数组。

注册窗体:


Rdim()过程:

    Public Sub Rdim()
        '重新定义arrayControl()数组维数
        ReDim Preserve arrayControl(10)
        '初始化数组
        arrayControl(0) = New Term(txtCardNo,"卡号")
        arrayControl(1) = New Term(txtStuNo,"学号")
        arrayControl(2) = New Term(txtName,"姓名")
        arrayControl(3) = New Term(txtCash,"金额")
        arrayControl(4) = New Term(txtRemarks,"备注")
        arrayControl(5) = New Term(cboDepartment,"系别")
        arrayControl(6) = New Term(cboGrade,"年级")
        arrayControl(7) = New Term(cboClass,"班级")
        arrayControl(8) = New Term(cboSex,"性别")
        arrayControl(9) = New Term(cboStatus,"状态")
        arrayControl(10) = New Term(cboType,"类型")
    End Sub

4.在CheckModel模块中添加CheckIsEmpty()函数,用来判断文本框、组合框的内容是否为空。

    '''定义判断是否为空的函数
    '''判断数组中控件的Text属性是否为空,并给出相应提示    
    '''</summary>    
    ''' <param name="arrayControl">需要遍历的结构体数组</param>    
    ''' <returns>返回Boolean值,true表示为空,false表示不为空</returns>
    Public Function CheckIsEmpty(ByVal arrayControl() As Term) As Boolean
        Dim termControl As Term
        '遍历结构体数组中的所有元素,如果控件文本为空,则弹出messsgBox提示用户 
        For Each termControl In arrayControl
            '判断窗体中的控件是否为文本框或组合框
            If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then
                '判断文本框或组合框中的内容是否为空
                If termControl.controlSub.Text.Trim = "" Then
                    MessageBox.Show(termControl.strText & "不能为空","",MessageBoxButtons.OK)
                    termControl.controlSub.Focus()
                    Return True
                    Exit Function
                End If
            End If
        Next
        Return False      '返回false,提示内容不为空
    End Function

5.在frmRegister窗体中调用CheckIsEmpty函数,检查是否为空。

    Private Sub btnOK_Click(sender As Object,e As EventArgs) Handles btnOK.Click
        '调用Rdim()初始化数组
        Call Rdim()
        '调用CheckIsEmpty()函数检查文本内容
        If CheckIsEmpty(arrayControl) Then
            Exit Sub
        End If
    End Sub

6.在CheckModel模块中添加AllEmpty()函数,用来清空窗体中的文本框、组合框的内容

'定义清空文本框或组合框的函数AllEmpty
    Public Function AllEmpty(ByVal arrayControl() As Term) As Boolean
        Dim termControl As Term

        For Each termControl In arrayControl
            If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then
                termControl.controlSub.Text = ""
            End If
        Next
        Return True
    End Function

7.在frmRegister窗体中调用CheckEmpty()函数,清空内容

    Private Sub btnEmpty_Click(sender As Object,e As EventArgs) Handles btnEmpty.Click
        Call Rdim()
        If AllEmpty(arrayControl) Then
            Exit Sub
        End If
    End Sub

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...