VB限制窗体内所有文本框为空

前端之家收集整理的这篇文章主要介绍了VB限制窗体内所有文本框为空前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

做系统的时候经常遇到限制窗体中文本框为空的情况,如果逐个判断代码写起来会很慢,想了个比较简单的方法,从窗体控件的角度出发。

代码如下:

Private Sub cmdOk_Click()
    Dim s As Control
    Dim frm As Form
    For Each s In frm
        If TypeOf s Is TextBox Then
            MsgBox "输入不能为空"
            Exit Sub
        End If
    Next
End Sub

如果窗体中有一个文本框允许空,就不行了,所以还得进一步思考一下。

跟德鹏商量后得出下面这个代码

Public Sub IsEmpty(pForm As Form)        '模块中定义公有过程判断窗体中的文本框有否有为空的
    Dim a As Control
      
    For Each a In pForm.Controls         '对窗体中的控件逐个遍历
        If a.Name = "txtSno" Then        '判断控件的名称,根据名称进行操作
            If a.Text = "" Then
                MsgBox "学号不能为空",vbOKOnly,"错误"
            End If
        ElseIf a.Name = "txtName" Then
            If a.Text = "" Then
                MsgBox "姓名不能为空","错误"
            End If
        ElseIf a.Name = "txtSex" Then
            If a.Text = "" Then
                MsgBox "性别不能为空","错误"
            End If
        ElseIf a.Name = "txtSchool" Then
            If a.Text = "" Then
                MsgBox "学校不能为空","错误"
            End If
        End If
    Next
End Sub


然后再在窗体中调用

Private Sub cmdOk_Click()
    Call IsEmpty(Me)    '调用模块中定义的公有过程
End Sub

如果在不同的窗体中,增加了新的文本框,那么只需在模块儿定义的过程中添加判断即可。这种方法,显得有点笨,但是也可以解决问题。

理想中的函数具有这样的功能。模块儿中的函数包含两个参数,一个是文本框控件数组,另一个是窗体控件。第一个参数接收所在窗体中,要判断的文本框,第二个参数传递具体窗体。但是在实现选择性的文本框判断的时候,就遇到麻烦了。现在还没有解决,先保留思路。

……

原文链接:https://www.f2er.com/vb/261053.html

猜你在找的VB相关文章