سؤال

I want to check the controls in my Form is empty or not... I have a long code for that. I give code given below.

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

Actually i don't want to check one PFESI textbox. If it is empty or not. This is a masked text box. My problem is when i press the submit button with all controls have data, it shows the messsage box "Give Complete Data!". Controls without data also shows the same message. Please try to check the code and give me solution.

هل كانت مفيدة؟

المحلول

You are trying to do it too complicated. I am not in front of the computer so maybe the code have minor errors:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top