0

我想检查我的表单中的控件是否为空......我有一个很长的代码。我给出下面给出的代码。

Public totflag As Boolean
Private Sub BTNSAVE_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BTNSAVE.Click
    CheckMyControls()
    If totflag = False Then
        MessageBox.Show("Give Compleate Data!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        coloring()
    ElseIf totflag = True Then
        MessageBox.Show("Success", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
End Sub
Public Sub coloring()
    Dim txt, cmb, mtxt, rtxt As Control
    For Each txt In EMPGBDATA.Controls
        If TypeOf txt Is TextBox Then
            If txt.Text = "" Then
                txt.BackColor = Color.Red
            End If
        End If
    Next
    For Each cmb In EMPGBDATA.Controls
        If TypeOf cmb Is ComboBox Then
            If cmb.Text = "Select" Then
                cmb.BackColor = Color.Red
            End If
        End If
    Next
    For Each mtxt In EMPGBDATA.Controls
        If TypeOf mtxt Is MaskedTextBox Then
            If mtxt.Text = "" AndAlso mtxt.Name <> "MTXTPFESI" Then
                mtxt.BackColor = Color.Red
            End If
        End If
    Next
    For Each rtxt In EMPGBDATA.Controls
        If TypeOf rtxt Is RichTextBox Then
            If rtxt.Text = "" Then
                rtxt.BackColor = Color.Red
            End If
        End If
    Next

End Sub
Public Function CheckMyControls() As Boolean
    Dim txt, cmb, mtxt, rtxt As Control
    Dim flagtxt, flagcmb, flagmtxt, flagrtxt As Boolean
    flagtxt = False
    For Each txt In EMPGBDATA.Controls
        If TypeOf txt Is TextBox Then
            If txt.Text = "" Then
                flagtxt = True
            End If
        End If
    Next
    flagcmb = False
    For Each cmb In EMPGBDATA.Controls
        If TypeOf cmb Is ComboBox Then
            If cmb.Text = "Select" Then
                flagcmb = True
            End If
        End If
    Next
    flagmtxt = False
    For Each mtxt In EMPGBDATA.Controls
        If TypeOf mtxt Is MaskedTextBox Then
            If mtxt.Text = "" AndAlso mtxt.Name <> "MTXTPFESI" Then
                flagmtxt = True
            End If
        End If
    Next
    flagrtxt = False
    For Each rtxt In EMPGBDATA.Controls
        If TypeOf rtxt Is RichTextBox Then
            If rtxt.Text = "" Then
                flagrtxt = True
            End If
        End If
    Next
    If flagtxt = True Or flagcmb = True Or flagmtxt = True Or flagrtxt = True Then
        totflag = False
    Else
        totflag = True
    End If
    Return totflag
End Function

实际上我不想检查一个 PFESI 文本框。是否为空。这是一个蒙面的文本框。我的问题是当我按下所有控件都有数据的提交按钮时,它会显示消息框“提供完整数据!”。没有数据的控件也显示相同的消息。请尝试检查代码并给我解决方案。

4

1 回答 1

0

你试图做的太复杂了。我不在电脑前,所以代码可能有小错误:

If CheckMyControls() = False Then
        MessageBox.Show("Give Compleate Data!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        coloring()
    Else
        MessageBox.Show("Success", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If

End Sub

Public Sub coloring()
    For Each cntrl In Me.Controls
        Select Case cntrl.GetType
            Case GetType(ComboBox)
                If cntrl.Text = "Select" Then
                    cntrl.BackColor = Color.Red
                    Exit For
                End If
            Case GetType(MaskedTextBox)
                If cntrl.Text = "" AndAlso cntrl.Name <> "MTXTPFESI" Then
                    cntrl.BackColor = Color.Red
                End If
            Case Else
                If cntrl.Text = "" Then
                    cntrl.BackColor = Color.Red
                End If

        End Select
    Next

End Sub

Public Function CheckMyControls() As Boolean
    Dim bEmptyControlFlag As Boolean
    For Each cntrl In Me.Controls
        Select Case cntrl.GetType
            Case GetType(ComboBox)
                If cntrl.Text = "Select" Then
                    bEmptyControlFlag = True
                    Exit For
                End If
            Case Else
                If cntrl.Text = "" Then
                    bEmptyControlFlag = True
                End If

        End Select
    Next

    Return Not bEmptyControlFlag
End Function
于 2013-01-11T13:09:38.897 回答