【前言】
第二次基础机房收费系统,在很多系统优化方面有了更多的认识,对于窗体中文本框内容是否为空的提示以及一次性清空其内容,这些在第一次的机房收费系统中进行了尝试,在这次的机房收费系统个人重构的过程中,再次产生了这一方面的需求,如何减少代码的重复率,于是对该方面进行了探究。
【具体操作】
操作一:
对于判断窗体中文本框是否为空以及一次性清空文本框内容这一问题,我们需要在UI层中建一个公共类,将相应的定义与函数写在该类中。
操作二:
1、在新建的公共类TextModel中声明公共内容部分:
- <span style="font-size:18px;">Imports System.Windows.Forms.Control
- Imports System.Object
- Public Class TextModel
- '定义一个结构体Term
- Public Structure Term
- Dim controlSub As System.Windows.Forms.Control
- Dim strText As String
- Sub New(ByVal controlSub As System.Windows.Forms.Control,ByVal strText As String)
- With Me
- .controlSub = controlSub
- .strText = strText
- End With
- End Sub
- End Structure
- '用结构体定义一个Term类型数组
- Public Shared arrayControl() As Term</span>
2、判断文本框中内容是否为空
(1)在公共类中TextModel类中写入相应的函数
- <span style="font-size:18px;"> '判断文本框是否为空的函数
- Public Shared Function CIsEmpty(ByVal ArrayControl() As Term) As Boolean
- '定义一个term变量
- Dim termControl As Term
- '遍历结构体数组中所有的元素,如果文本框为空,则进行相应的提示
- For Each termControl In ArrayControl
- If TypeOf termControl.controlSub Is System.Windows.Forms.TextBox Then
- If termControl.controlSub.Text.Trim = "" Then
- Windows.Forms.MessageBox.Show(termControl.strText & "不能为空","提醒",Windows.Forms.MessageBoxButtons.OK,Windows.Forms.MessageBoxIcon.Exclamation)
- termControl.controlSub.Focus()
- Return True
- Exit Function
- End If
- End If
- Next
- End Function</span>
(2)在实际窗体中,例如在frmOnlineRecord窗体中判断文本框中内容是否为空
- <span style="font-size:18px;">Public Class frmOnlineRecord
- '对定义的结构体进行初始化处理,定义一个过程Rdim(),来完成该功能
- Private Sub Rdim()
- ReDim Preserve TextModel.arrayControl(1)
- TextModel.arrayControl(0) = New TextModel.Term(txtCardID,"卡号")
- End Sub
- Private Sub btnInquire_Click(sender As Object,e As EventArgs) Handles btnInquire.Click
- '调用Rdim过程进行数组初始化
- Call Rdim()
- If TextModel.CIsEmpty(TextModel.arrayControl) = True Then
- Exit Sub
- End If
- End Sub
- End Class</span>
3、一次性清除文本框中的内容
(1)在公共类TextModel中写入相应的函数
- <span style="font-size:18px;"> '设置对文本框一键清除
- Public Shared Function AllEmpty(ByVal arraycontrol() As Term) As Boolean
- Dim termControl As Term
- For Each termControl In arraycontrol
- If TypeOf termControl.controlSub Is Windows.Forms.TextBox Then
- termControl.controlSub.Text = ""
- End If
- Next
- Return True
- End Function</span>
(2)在对应窗体中调用 AllEmpty函数,实现一次性清除文本框中的内容
【学习感悟】
就像米老师跟我们说过:从此,我们要开始不将就。有不满意的部分,就需要我们去改变,做到更好。这个过程需要我们积极地去探索,最怕的就是“就这样吧”、“凑活吧”、“差不多就行了”,因为一旦有了这样的心理,我们很难再有新的发现。在机房重构的过程中,自己想到了如何解决文本框的问题,在网上找了一点资料后没有找到想要的内容,想要去找别的同学寻求帮助的时候,硕硕和宋荣凯对我说:网上有很多该方面的资料,自己找找看。很感谢他们给我一个自己探索的机会,正是在这样的情况下,才产生了意想不到的收获!