第一次敲机房的时候,有很多窗体中都有清空文本框或组合框中内容的功能,当时用了循环来做。现在第二次机房重构,发现判断文本框、组合框内容是否为空也可以用循环。其实这些功能最直接的方法就是一个一个的判断,不过这样代码基本上是重复的,这应该就是编程中的“坏味道”吧。我们并不是敲代码的机器,应该试着去尝试一些简单快速有效的方法。
在网上查了一些方法,有一种是监理textBox文本框的控件数组,来循环判断,总觉得数组的命名跟咱们的机房有些问题,于是又发现了一个更好的方法。
下面就具体介绍一下如何用循环来判断文本框是否为空以及清空文本。
1.新建CheckModel模块。(右击U层——添加——新建项,在弹出的对话框中继续选择即可添加)
2.在新建的模块中定义结构体Term,并定义Term类型的结构体数组。(关于结构体http://baike.baidu.com/link?url=16VDWHvVeIsVSfICL4zaEcqIbLieYSp_Y6LzeCgRt77pJ_Ic0DyUJIg8r9BaT6RWCsDs7GvV0TvcB0SOhhTS5_)
'定义结构体 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
3.以注册窗体为例,在frmRegister窗体中定义过程Rdim(),用来初始化Term类型结构体数组。
注册窗体:
Rdim()过程:
Public Sub Rdim() '重新定义arrayControl()数组维数 ReDim Preserve arrayControl(10) '初始化数组 arrayControl(0) = New Term(txtCardNo,"卡号") arrayControl(1) = New Term(txtStuNo,"学号") arrayControl(2) = New Term(txtName,"姓名") arrayControl(3) = New Term(txtCash,"金额") arrayControl(4) = New Term(txtRemarks,"备注") arrayControl(5) = New Term(cboDepartment,"系别") arrayControl(6) = New Term(cboGrade,"年级") arrayControl(7) = New Term(cboClass,"班级") arrayControl(8) = New Term(cboSex,"性别") arrayControl(9) = New Term(cboStatus,"状态") arrayControl(10) = New Term(cboType,"类型") End Sub
4.在CheckModel模块中添加CheckIsEmpty()函数,用来判断文本框、组合框的内容是否为空。
'''定义判断是否为空的函数 '''判断数组中控件的Text属性是否为空,并给出相应提示 '''</summary> ''' <param name="arrayControl">需要遍历的结构体数组</param> ''' <returns>返回Boolean值,true表示为空,false表示不为空</returns> Public Function CheckIsEmpty(ByVal arrayControl() As Term) As Boolean Dim termControl As Term '遍历结构体数组中的所有元素,如果控件文本为空,则弹出messsgBox提示用户 For Each termControl In arrayControl '判断窗体中的控件是否为文本框或组合框 If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then '判断文本框或组合框中的内容是否为空 If termControl.controlSub.Text.Trim = "" Then MessageBox.Show(termControl.strText & "不能为空","",MessageBoxButtons.OK) termControl.controlSub.Focus() Return True Exit Function End If End If Next Return False '返回false,提示内容不为空 End Function
5.在frmRegister窗体中调用CheckIsEmpty函数,检查是否为空。
Private Sub btnOK_Click(sender As Object,e As EventArgs) Handles btnOK.Click '调用Rdim()初始化数组 Call Rdim() '调用CheckIsEmpty()函数检查文本内容 If CheckIsEmpty(arrayControl) Then Exit Sub End If End Sub
6.在CheckModel模块中添加AllEmpty()函数,用来清空窗体中的文本框、组合框的内容
'定义清空文本框或组合框的函数AllEmpty Public Function AllEmpty(ByVal arrayControl() As Term) As Boolean Dim termControl As Term For Each termControl In arrayControl If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then termControl.controlSub.Text = "" End If Next Return True End Function
7.在frmRegister窗体中调用CheckEmpty()函数,清空内容。
Private Sub btnEmpty_Click(sender As Object,e As EventArgs) Handles btnEmpty.Click Call Rdim() If AllEmpty(arrayControl) Then Exit Sub End If End Sub原文链接:https://www.f2er.com/vb/257226.html