VB.NET-轻松判断文本框是否为空,一键清空文本框内容

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

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

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

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

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

<span style="font-size:18px;">    '定义结构体Term
    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
</span>

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

    <span style="font-size:18px;">Private Sub Rdim()

        ReDim Preserve arrayControl(9)    '重定义数组维数

        '初始化数组
        arrayControl(0) = New Term(txtCID, "卡号")
        arrayControl(1) = New Term(txtBalance, "充值金额")
        arrayControl(2) = New Term(txtSID, "学号")
        arrayControl(3) = New Term(txtName, "姓名")
        arrayControl(4) = New Term(cmbsex, "性别")
        arrayControl(5) = New Term(txtDepartment, "系别")
        arrayControl(6) = New Term(cmbGrade, "年级")
        arrayControl(7) = New Term(txtClass, "班级")
        arrayControl(8) = New Term(cmbType, "类型")
        arrayControl(9) = New Term(cmbstatus, "卡的状态")
    End Sub
</span>

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

    ''' <summary>
    ''' 判断数组中控件的Text属性是否为空,并给出相应提示
    ''' </summary>
    ''' <param name="arrayControl">需要遍历的结构体数组</param>
    ''' <returns>返回Boolean值,true表示为空,false表示不为空</returns>
    Public Function CheckIsEmpty(ByVal arrayControl() As Term) As Boolean
        Dim termControl As Term                                     '声明一个Term类型变量termControl

        '遍历结构体数组中的所有元素,如果控件文本为空,则进行相应提示
        For Each termControl In arrayControl                        '遍历结构体数组中所有元素
            If TypeOf termControl.controlSub Is TextBox Then        '判断控件是否为文本框
                If termControl.controlSub.Text.Trim = "" Then       '判断文本框内容是否为空
                    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    termControl.controlSub.Focus()                  '为空控件得到焦点
                    Return True
                    Exit Function
                End If
            ElseIf TypeOf termControl.controlSub Is ComboBox Then   '判断控件是否为组合框
                If termControl.controlSub.Text.Trim = "" Then       '判断组合框内容是否为空
                    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    termControl.controlSub.Focus()                  '为空控件得到焦点
                    Return True
                    Exit Function
                End If
            End If
        Next
        Return False
    End Function

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

    ''' <summary>
    ''' 清空窗体中所有文本框、组合框的Text
    ''' </summary>
    ''' <param name="arrayControl">需要遍历的结构体数组</param>
    ''' <returns>返回布尔值,True</returns>
    ''' <remarks></remarks>
    Public Function AllEmpty(ByVal arrayControl() As Term) As Boolean
        Dim termControl As Term                                     '声明一个Term类型变量termControl

        '遍历结构体数组中的所有元素,清空其Text属性
        For Each termControl In arrayControl                        '遍历结构体数组中所有元素
            If TypeOf termControl.controlSub Is TextBox Then        '判断控件是否为文本框
                If termControl.controlSub.Text.Trim <> "" Then    '判断文本框内容是否为空
                    termControl.controlSub.Text = ""
                End If
            ElseIf TypeOf termControl.controlSub Is ComboBox Then   '判断控件是否为组合框
                If termControl.controlSub.Text.Trim <> "" Then    '判断组合框内容是否为空
                    termControl.controlSub.Text = ""
                End If
            End If
        Next
        Return True
    End Function

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

检查是否为空:

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

一键清空:

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

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

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

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

VB.NET-轻松判断文本框是否为空,一键清空文本框内容

时间: 2024-08-02 11:04:27

VB.NET-轻松判断文本框是否为空,一键清空文本框内容的相关文章

vb.net机房收费 &amp; Register文本框为空提示,一键清空文本框所有内容

已经第二次机房收费系统重构了,一遍当然得有一遍的效果,正如对于文本框为空的提示方法,回顾第一遍机房,那些傻里傻气的If语句让自己对代码的亲和度大打折扣啊!那么到底有什么办法解决那些重复性的判断呢?这时候我们就要提到所谓的Model窗体了.在Model窗体中,建立一个封装数组,当窗体中需要判断大量文本框为空的时候,只需简单的调用即可. 新建一个Model类,来存放公共需要的部分. 1.定义一个结构体Term,且用结构体封装一个数组 Public Structure Term '定义结构体term

判断字符串数组里面为空

有的时候为了判断一个字符串数组里面是否有值,或者是否有我们想要的值: 比如:判断 char name[13] = {0}; 经过一系列的赋值或者其他的操作,需要判断里面的值为空,即没有任何内容. strcmp(name, "\0"); 返回值如果是0,则说明里面是\0,即没有任何值. 比较函数还有 strncmp(); memcmp();

判断文本框是否为空

在窗体上往往有很多文本框需要输入信息,一些下拉框需要选择,对于这些信息的输入,我们总是需要判断输入的是否为空,以前,总是一个一个的判断,这样太繁琐,也可能会丢掉其中的一个两个的.现在就让我们轻松解决判断文本框是否为空吧. <span style="font-size:18px;">''' <summary> ''' 用来判断文本框和下拉框是否为空 ''' </summary> ''' <remarks></remarks> M

Winform - 判断GroupBox控件中的TextBox文本框是不是为空

foreach (Control item in this.groupBox2.Controls) { if (item is TextBox) { if (item.Text.Trim() == "") { MessageBox.Show("文本框不能为空!", "提示"); return; } } }

定义函数检索窗体中所有文本框是否为空

以前用VB做学生信息管理系统和机房收费系统,在遇到要判断用户是否在文本框输入数据的时候写很多判断语句. 现在用VB.NET重构机房收费系统,要尽量把代码重复利用率降低,所以就网上搜着了一个带参数的可以自动检索代码重复利用率的函数,留着以后备用. Public Function IsExists(ByVal frmTestText As Windows.Forms.Form) As Boolean IsExists = True Dim c As Control For Each c In frm

使用语音输入法时,当文字没有加载出来,清空文本框时系统崩溃

今天测试组发现一问题:"在对话页使用语音输入法时,当文字没有加载出来点击"发送"按钮,系统崩溃": 于是网上查了很多资料还是没什么好的方式: 测试微信的发送消息功能,一样的都有此bug问题,毕现!(程序立即崩溃): 如下图(正在获取语音数据时点击发送信息程序立即崩溃) 解决办法: 写了一方法: BOOL containsDictationView(UIView *view) { if (strstr(class_getName(view.class), "

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

Rdlc技巧,rdlc报表中获取文本框或某个表格单元格中的内容

在RDLC报表中,随意摆放的控件,排列看起来很整齐,但是生成WEB后看就不是很友好了,导出PDF可能又是一个样, 解决这个办法就是把这些摆放在一个容器内,比如Table 内 用ReportItems这个属性来取value值.细节如下 =ReportItems!textbox1.Value + ReportItems!textbox12.Value 注意,页头页脚可以取Body里的值,但是Body里不可以取页头与页脚的值 Rdlc技巧,rdlc报表中获取文本框或某个表格单元格中的内容

iOS 去掉导航栏的边界黑线&amp;去掉搜索框的边界黑线和其中文本输入框的阴影 - 解决方案

去掉导航栏的边界黑线 in viewDidload: [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 去掉搜索框的边界黑线 in viewDidload: