2013-07-25 199 views
6

我有一个winform中的几个文本框和蒙面的texboxes,我需要检查它们是否为空,null或没有任何处理之前。如何检查屏蔽文本框是否为空?

我的代码大部分是按预期工作,如果有空的texbox我得到一条消息,告诉用户文本框是空的,它退出子,但由于某种原因,不检查蒙面文本框。

也许我错了,它正在检查他们,但由于他们有面具,他们不被视为空或空。

你的帮助检查是否蒙面texboxes是空的将不胜感激。

这是代码:

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 

回答

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

Endif 
2

的问题是,你只能在这条线上寻找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 
+0

我改成了texboxbase,但它仍然忽略了maskedtexbox。 – David

1

试试这个:

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 
+0

有没有办法确保检查遵循Tab键顺序而不是检查随机框?还有一种方法可以显示消息框中的描述,而不是.Name属性?例如显示Shift而不是txtShift。谢谢 – David

+0

对不起,我不知道......我认为控件的索引号是它们被添加到表单的顺序,如果有帮助的话,循环可能会遵循这个顺序,但我不是100% –

+0

我不确定你的第二个问题。如果你的控件的名字是txtShift,你需要弄清楚如何清除“txt”......也许你可以用第一个大写字母来处理。可能有更好的方法来实现它。只是短暂的想法 –

1

未经测试,但不是检查对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