Как проверить, пуст ли Маскированное текстовое поле?

У меня есть несколько текстовых полей и замаскированных текстовых полей в winform, которые мне нужно проверить, пусты ли они, null или ничего, прежде чем продолжить.

код, который у меня есть по большей части, работает по назначению, если есть пустое текстовое поле, я получаю сообщение, сообщающее пользователю, что текстовое поле пусто, и оно выходит из суб, но по какой-то причине не проверяет замаскированные текстовые поля.

может быть, я ошибаюсь, и он проверяет их, но поскольку у них есть Маска, они не считается пустым или нулевым.

ваша помощь с проверкой, если маскированные текстовые поля пусты, будет очень признательна.

этот код:

Private Sub btnCargarInformacion_Click(sender As System.Object, e As System.EventArgs) Handles btnCargar.Click
    For Each myControl As Control In Me.GroupBox1.Controls
        If TypeOf (myControl) Is TextBox Then
            If myControl.Text.Equals(String.Empty) Then
                MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name)))
            End If
            If myControl.Text.Equals(String.Empty) Then
                Exit Sub
            End If
        End If
    Next
    Dim PartePersonalTableApt As New PersonalObraDataSetTableAdapters.PartePersonalTableAdapter
    Dim PersonalObTableApt As New PersonalObraDataSetTableAdapters.PersonalObTableAdapter
    PartePersonalTableApt.ClearBeforeFill = True
    PartePersonalTableApt.FillByFecha(PersonalObraDataSet.PartePersonal, txtDate.Text, txtDepartamento.Text, txtTurno.Text)
    PersonalObTableApt.ClearBeforeFill = True
    PersonalObTableApt.Fillby(PersonalObraDataSet.PersonalOb)
End Sub

4 ответов


if textbox.MaskCompleted=True Then
    'they entered something 
else
     ' they didnt enter anything

Endif

проблема в том, что вы только ищете TextBox объекты в этой строке:

If TypeOf (myControl) Is TextBox Then

С MaskedTextBox управление не наследуется от TextBox класс, вам нужно будет проверить этот тип отдельно, например:

If (TypeOf (myControl) Is TextBox) Or (TypeOf (myControl) Is MaskedTextBox) Then

однако, поскольку они оба наследуют от TextBoxBase класс, вы можете просто проверить это вместо этого:

If TypeOf (myControl) Is TextBoxBase Then

попробуйте это:

If TypeOf myControl Is MaskedTextBox Then
        If CType(myControl, MaskedTextBox).Text.Equals(String.Empty) Then
            MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name)))
        End If
        If CType(myControl, MaskedTextBox).Text.Equals(String.Empty) Then
            Exit Sub
        End If
End If

непроверенный, но вместо проверки против string.empty, вы можете проверить его против MaskedTextBox Mask собственность.

If myControl.Text.Equals(myControl.Mask) Then
    MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name)))
End If