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

新建一个Model类,来存放公共需要的部分。

1、定义一个结构体Term,且用结构体封装一个数组

 Public Structure Term   '定义结构体termDim controlSub As ControlDim strText As StringSub New(ByVal controlSub As Control, ByVal strText As String)  '初始化对象With Me.controlSub = controlSub.strText = strTextEnd WithEnd Sub


2、用结构体定义一个Term类型数组

 '定义一个Term类型的结构体数组Public arrayControl() As Term

3、判断文本框是否为空的函数

  ''' <summary>''' 判断文本框是否为空,进而给出相应提示''' </summary>''' <param name="ArrayControl"></param>''' <returns></returns>''' <remarks></remarks>Public Function CIsEmpty(ByVal ArrayControl() As Term) As BooleanDim termControl As Term   '定义一个term类型变量'遍历结构体数组中的所有元素,如果控件文本为空,则进行相应提示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 TrueExit FunctionEnd If

4、当然函数是写出来了,但是还得对定义的结构体进行初始化处理。我们需要在Registe的U层定义一个过程Rdim(),来完成此功能

  Private Sub Rdim()ReDim Preserve arrayControl(9)  '重新声明数组维数'初始化数组arrayControl(0) = New Term(txtCard, "卡号")arrayControl(2) = New Term(txtstudentNo, "学号")arrayControl(3) = New Term(txtstudentName, "姓名")arrayControl(4) = New Term(ComboSex, "性别")arrayControl(5) = New Term(txtgrade, "年级")arrayControl(6) = New Term(txtclass, "班级")arrayControl(7) = New Term(txtCash, "金额")arrayControl(8) = New Term(txtstatus, "注释")End Sub

5、准备工作做完了,剩下的就是简单的调用了!在Register窗体中直接调用CIsEmpty函数即可。

Call Rdim()    '首先调用Rdim过程进行数组初始化'调用CIsEmoty()函数,检测是否输入文本框内容If CIsEmpty(arrayControl) ThenExit SubEnd If

这样当运行出现文本框为空的情况,系统则会自动提示,方便简洁!

6、那么如何能够实现一键清除操作呢?方法同判断文本框为空一样,只需要编写一个清除的函数则可

  ''' <summary>''' 清楚文本框的数据''' </summary>''' <param name="arraycontrol"></param>''' <returns>返回Boolean值,true</returns>''' <remarks></remarks>Public Function AllEmpty(ByVal arraycontrol() As Term) As BooleanDim termControl As Term   '定义一个term类型变量For Each termControl In arraycontrolIf TypeOf termControl.controlSub Is TextBox ThentermControl.controlSub.Text = ""     '判断控件类型,如果是文本框或组合框则内容清空End IfNextReturn TrueEnd Function

7、然后调用:

Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.ClickCall Rdim()    '首先调用Rdim过程进行数组初始化'调用AllEmoty()函数,删除文本框中内容If AllEmpty(arrayControl) ThenExit SubEnd IfEnd Sub

     上述虽然只是在注册窗体中描述,但是对于其他的文本框以及组合框都是使用的,只要在对应的窗体中对结构体进行初始化处理,然后直接调用则可。

感受:

     机房收费依旧在一步一步的进行着,与以往不同的则是所谓的“感觉”已经成熟了,最起码当遇到问题的时候自己会想尽办法去寻找最简单实用的方法来满足其需求。

转载于:https://www.cnblogs.com/huohuoL/p/10545572.html

vb.net 文本框为空提示,一键清空文本框所有内容相关推荐

  1. html一键清空数组中的内容,前端页面中JS和Jquery框架对数组遍历,添加,删除,清空的一些使用...

    遍历 //res为数组 for (var i = 0; i < res.length; i++) { res[i] } var arr = new Array(); $(另一个数组在这).eac ...

  2. js文本框设置必填项_Jquery文本框小例(必填框)

    //当光标离开文本框的时候如果文本框为空,则将文本框边框色设置为红色,如果不为空则为白色.提示:焦点进入控件的事件是focus或者mousedown,焦点离开控件的事件是blur. $(functio ...

  3. java如何设置文本框提示_[Java教程]一个友好的文本框内显示提示语 jquery 插件

    [Java教程]一个友好的文本框内显示提示语 jquery 插件 0 2014-08-08 18:01:25 插件实现文本框内默认显示提示语,当文本框获得焦点时提示语消失. 如果没有输入或输入为空则失 ...

  4. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)...

    VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 文本框txtStopTime1 时间框DTStopTime1(DTPicke ...

  5. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)

    VB6.0中,DTPicker日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值(解决方案) 参考文章: (1)VB6.0中,DTPicker日期.时间控件不允许为空时,采用文本框与日 ...

  6. html中文本框的透明度,jQuery实现textarea文本框半透明文本提示效果

    jquery实现textarea文本框带有半透明文本提示效果: textarea文本框一般用于编辑大段的文本,比如编辑器或者简单的留言回复之类的功能,有的在textarea文本框的有默认的提示语言. ...

  7. 给文本框添加灰色提示文字

    html> <head> <title>中国站长天空-网页特效-表单特效-给文本框添加灰色提示文字</title> <meta http-equiv=& ...

  8. VB.net小技巧——读取文本文件并显示到文本框中

    VB.net小技巧--读取文本文件并显示到文本框中 第一步,在工具箱添加OpenFileDialog控件 第二步 openfiledialog 属性 filter设置为: 文本文件(*.txt)|*. ...

  9. HTML-input文本框(添加提示文字,填写内容时消失)

    input文本框内添加提示文字,填写内容时消失: 用placeholder属性作为提示语 <input placeholder="提示语..."></input& ...

最新文章

  1. 脑机接口中的后门攻击
  2. iccv2020论文汇总_ICCV2019 最佳论文出炉,附1987~2019历届ICCV最佳论文汇总( 提供下载)...
  3. HTML / img src 使用绝对路径注意事项
  4. 使用Tomcat部署应用
  5. 数据字典表Truncate丢失将招致数据库不可用
  6. MOTChallenge榜单第一!用于多目标跟踪简单高效的数据关联方法 BYTE
  7. 一文入门基于三维数据的深度学习
  8. 接口测试工具--apipost预/后执行脚本
  9. 实测金山毒霸极速版杀毒软件表现
  10. python3.6 - threading 多线程编程基础(1)
  11. python王者荣耀
  12. Unity URP Reflection
  13. 关于js数组方法的题目整理 6.24更新至题目5
  14. login.php 什么意思,php is_login()做什么用的;
  15. AMD三季度营收创新高,借数据中心业务与英特尔打响5G前哨战?
  16. EPS在倾斜摄影“房地一体”项目中的应用及操作简介
  17. c语言代码运行成图指令代码,C语言图形编程代码.doc
  18. 掏心掏肺分享,大学四年我是怎么学操作系统和计算机网络的?
  19. 滚筒洗衣机尺寸 2022
  20. miui12.5增强版刷机教程

热门文章

  1. UVA11624_Fire!
  2. UNION 和UNION ALL的区别
  3. 牛腩新闻发布系统——初探CSS
  4. 教你学会Sql中 ROW_NUMBER的用法
  5. MVC中使用 事物
  6. FLASH开发[02]
  7. SQL Server 2005 智能感知插件 - SQL Prompt 3.8.0.224
  8. 古典概型中的几何体计数
  9. [洛谷P1822]魔法指纹
  10. 20、【购物车模块】——更新、删除、查询购物车功能开发