• 【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?


    做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景。我们曾经是这样走来的:

    第一版:

    好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉用户,具体是哪一个控件,输入有误。

    坏处:首先,界面看起来就很繁琐;其次,浪费了大量的手工工作,代码不具有可复用性;再次,编码的时候,如果控件数目比较多的话,容易忘记其中的某些控件。

            If (Trim(txtCardID.Text) = "" then'判断卡号是否为空
                If Trim(txtRechargeCash.Text) = "" Then '判断充值金额,是否为空
                    If Trim(txtStuID.Text) = "" Then '判断学号是否为空
                        If Trim(txtStuName.Text) = "" Then '判断学生姓名是否为空
                            If Trim(cmbSex.Text) = "" Then '判断性别是否为空
    
                                MsgBox("固定用户中,***不能为空!", , "友情提示")
                            Else
                            End If
                        Else
                        End If
                    Else
                    End If
                Else
                End If
            Else
            End If


    第二版:

    好处:代码界面看起来,美观整洁。

    坏处:首先,弹出框的提示太笼统了,不够具体,没有良好的用户体验。当某控件输入为空时,看到弹出的提示,会感到莫名其妙,不知道具体是哪里错了。其次,代码不具有可复用性。再次,编码的时候,如果控件数目比较多的话,容易忘记其中的某些控件。

            If (Trim(txtCardID.Text) = "" Or Trim(txtRechargeCash.Text) = "" Or Trim(txtStuID.Text) = "" Or Trim(txtStuName.Text) = "" Or Trim(cmbSex.Text) = "" Or Trim(txtDepartment.Text) = "" Or Trim(txtGrade.Text) = "" Or Trim(txtClass.Text) = "" Or Trim(cmbState.Text) = "") Then
                MsgBox("固定用户中,输入信息不能为空!", , "友情提示")
                Exit Sub
            End If

    第三版:

    好处:首先,代码界面美观整洁。其次,弹出框的信息提示非常具体,明确的提示用户哪里出错了。再次,代码的封装,具有可复用性。把判断是否为空的函数,放在一个单独的类库中。然后,计算机自动帮您遍历界面中的所有控件,肯定不会拉掉其中的某些控件的。

    坏处:计算机自动遍历界面中的所有控件,应该会很累的吧?不过,这少可以减轻程序猿的负担了。


    Imports System.Windows.Forms '引用窗体中的控件
    
        Public Shared Function IsAllEmpty(ByVal frm As Form) As Boolean '判断文本信息是否为空
            Dim control As New Control
            For Each ct1 As Control In frm.Controls '变量窗体中的所有控件
                If ct1.GetType() Is GetType(TextBox) Then '判断控件类型是否为TextBox
                    If ct1.Text.Length = 0 Then '判断TextBox中信息是否为空,返回True或False
                        MsgBox(ct1.Tag + "不能为空!", , "友情提示")
                        ct1.Focus()
                        Return False '文本信息为空,返回False
                        Exit Function
                    Else
                        Return True '文本信息不为空,返回True
                    End If
                End If
            Next
        End Function
    
    

    调用的时候:

         Dim isResultEmpty As Boolean
            isResultEmpty = frmName.IsAllEmpty(Me)
            If isResultEmpty = True Then '判断文本信息是否为空,为空返回False,不为空返回True
            Else
            End If


    总结:学习的过程是循序渐进的,不要奢求一口吃个胖子。当你遇到一堆又一堆问题的时候,查询了很多的资料,发现自己更加头昏脑胀的时候。给你的建议是:先做一遍!无论对错,在做的过程中,对遇到的问题“逐一击破”!就像是给你一团乱糟糟的毛线,如果你实在是理不清头绪的话,就用剪刀随便找根线咔嚓一下,自己设定一个起始点就可以了。






  • 相关阅读:
    什么叫TLD、gTLD、nTLD、ccTLD、iTLD 以及几者之间的关系
    socket
    windows下codeblocks报错undefined reference to `WSAStartup@8'|
    Codeforces 467C George and Job | DP
    51Nod 1049最大子段和 | 模板
    51Nod 最大子矩阵和 | DP
    AtomicInteger
    sun.misc.unsafe
    CAS
    java中的四种引用
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3310485.html
Copyright © 2020-2023  润新知