vb⽂本框为空提⽰,⼀键清空⽂本框所有内容
已经第⼆次机房收费系统重构了,⼀遍当然得有⼀遍的效果,正如对于⽂本框为空的提⽰⽅法,回顾第⼀遍机房,那些傻⾥傻⽓的If语句让⾃⼰对代码的亲和度⼤打折扣啊!那么到底有什么办法解决那些重复性的判断呢?这时候我们就要提到所谓的Model窗体了。在Model窗体中,建⽴⼀个封装数组,当窗体中需要判断⼤量⽂本框为空的时候,只需简单的调⽤即可。
新建⼀个Model类,来存放公共需要的部分。
1、定义⼀个结构体Term,且⽤结构体封装⼀个数组
Public Structure Term '定义结构体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
2、⽤结构体定义⼀个Term类型数组
'定义⼀个Term类型的结构体数组
Public arrayControl() As Term
3、判断⽂本框是否为空的函数
''' <summary>
''' 判断⽂本框是否为空,进⽽给出相应提⽰
''' </summary>
''' <param name="ArrayControl"></param>
typeof array''' <returns></returns>
''' <remarks></remarks>
Public Function CIsEmpty(ByVal ArrayControl() As Term) As Boolean
Dim termControl As Term '定义⼀个term类型变量
'遍历结构体数组中的所有元素,如果控件⽂本为空,则进⾏相应提⽰
For Each termControl In ArrayControl '遍历结构体数组中的所有元素
If lSub Is TextBox Then '判断控件是否为⽂本框
lSub.Text.Trim = "" Then '判断⽂本框内容是否为空
MessageBox.Show(termControl.strText & "不能为空!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return True
Exit Function
End 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) Then
Exit Sub
End If
这样当运⾏出现⽂本框为空的情况,系统则会⾃动提⽰,⽅便简洁!
6、那么如何能够实现⼀键清除操作呢?⽅法同判断⽂本框为空⼀样,只需要编写⼀个清除的函数则可
''' <summary>
''' 清楚⽂本框的数据
''' </summary>
''' <param name="arraycontrol"></param>
''' <returns>返回Boolean值,true</returns>
''' <remarks></remarks>
Public Function AllEmpty(ByVal arraycontrol() As Term) As Boolean
Dim termControl As Term '定义⼀个term类型变量
For Each termControl In arraycontrol
If lSub Is TextBox Then
End If
Next
Return True
End Function
7、然后调⽤:
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
Call Rdim() '⾸先调⽤Rdim过程进⾏数组初始化
'调⽤AllEmoty()函数,删除⽂本框中内容
If AllEmpty(arrayControl) Then
Exit Sub
End If
End Sub
上述虽然只是在注册窗体中描述,但是对于其他的⽂本框以及组合框都是使⽤的,只要在对应的窗体中对结构体进⾏初始化处理,然后直接调⽤则可。
感受:
机房收费依旧在⼀步⼀步的进⾏着,与以往不同的则是所谓的“感觉”已经成熟了,最起码当遇到问题的时候⾃⼰会想尽办法去寻最简单实⽤的⽅法来满⾜其需求。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论