vb.net & 文本框为空提示,一键清空文本框所有内容

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

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

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

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Public Structure Term  '定义结构体term 
  2.        Dim controlSub As Control 
  3.        Dim strText As String 
  4.        Sub New(ByVal controlSubAs Control, ByVal strTextAs String'初始化对象 
  5.            With Me 
  6.                .controlSub = controlSub 
  7.                .strText = strText 
  8.            End With 
  9.        End Sub 

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

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. '定义一个Term类型的结构体数组 
  2.    Public arrayControl() As Term 

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

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. ''' <summary> 
  2.   ''' 判断文本框是否为空,进而给出相应提示 
  3.   ''' </summary> 
  4.   ''' <param name="ArrayControl"></param> 
  5.   ''' <returns></returns> 
  6.   ''' <remarks></remarks> 
  7.   Public Function CIsEmpty(ByVal ArrayControl()As Term) AsBoolean 
  8.       Dim termControl As Term  '定义一个term类型变量 
  9.       '遍历结构体数组中的所有元素,如果控件文本为空,则进行相应提示 
  10.       For Each termControlIn ArrayControl               '遍历结构体数组中的所有元素 
  11.           If TypeOf termControl.controlSubIs TextBox Then '判断控件是否为文本框 
  12.               If termControl.controlSub.Text.Trim ="" Then    '判断文本框内容是否为空 
  13.                   MessageBox.Show(termControl.strText & "不能为空!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 
  14.                   termControl.controlSub.Focus()     '获得焦点 
  15.                   ReturnTrue 
  16.                   Exit Function 
  17.               End If 
4、当然函数是写出来了,但是还得对定义的结构体进行初始化处理。我们需要在Registe的U层定义一个过程Rdim(),来完成此功能

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Private Sub Rdim() 
  2.       ReDim Preserve arrayControl(9) '重新声明数组维数 
  3.  
  4.       '初始化数组 
  5.       arrayControl(0) = New Term(txtCard,"卡号"
  6.       arrayControl(2) = New Term(txtstudentNo,"学号"
  7.       arrayControl(3) = New Term(txtstudentName,"姓名"
  8.       arrayControl(4) = New Term(ComboSex,"性别"
  9.       arrayControl(5) = New Term(txtgrade,"年级"
  10.       arrayControl(6) = New Term(txtclass,"班级"
  11.       arrayControl(7) = New Term(txtCash,"金额"
  12.       arrayControl(8) = New Term(txtstatus,"注释"
  13.   End Sub 
5、准备工作做完了,剩下的就是简单的调用了!在Register窗体中直接调用CIsEmpty函数即可。
[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Call Rdim()    '首先调用Rdim过程进行数组初始化 
  2.         '调用CIsEmoty()函数,检测是否输入文本框内容 
  3.         If CIsEmpty(arrayControl)Then 
  4.             Exit Sub 
  5.         End If 
这样当运行出现文本框为空的情况,系统则会自动提示,方便简洁!

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

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. ''' <summary> 
  2.   ''' 清楚文本框的数据 
  3.   ''' </summary> 
  4.   ''' <param name="arraycontrol"></param> 
  5.   ''' <returns>返回Boolean值,true</returns> 
  6.   ''' <remarks></remarks> 
  7.   Public Function AllEmpty(ByVal arraycontrol()As Term) AsBoolean 
  8.       Dim termControl As Term  '定义一个term类型变量 
  9.  
  10.       For Each termControlIn arraycontrol 
  11.  
  12.           If TypeOf termControl.controlSubIs TextBox Then 
  13.               termControl.controlSub.Text = ""     '判断控件类型,如果是文本框或组合框则内容清空 
  14.           End If 
  15.       Next 
  16.       Return True 
  17.   End Function 
7、然后调用:

[vb] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. Private Sub btnClear_Click(senderAs Object, eAs EventArgs) Handles btnClear.Click 
  2.         Call Rdim()    '首先调用Rdim过程进行数组初始化 
  3.         '调用AllEmoty()函数,删除文本框中内容 
  4.         If AllEmpty(arrayControl) Then 
  5.             Exit Sub 
  6.         End If 
  7.     End Sub 
     上述虽然只是在注册窗体中描述,但是对于其他的文本框以及组合框都是使用的,只要在对应的窗体中对结构体进行初始化处理,然后直接调用则可。

感受:

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

1 0
原创粉丝点击