检查文本框是否为空

时间:2013-07-24 17:28:56

标签: vb.net winforms textbox

我有一个带有绑定数据网格视图的winform,4个文本框和一个按钮。单击按钮,将调用“fillby”语句,数据将加载到datagridview上,文本框的内容将成为datagridview新行中某些字段的默认值。

我需要检查所有文本框以确保它们不是空的,如果它们中的任何一个是空的,则会弹出一条消息,说明哪个文本框为空并且还使数据网格视图无法填充。

这是我到目前为止的代码:

 Private Sub btnCargarInformacion_Click(sender As System.Object, e As System.EventArgs) Handles btnCargar.Click
    Dim emptyTextBoxes =
    From txt In Me.Controls.OfType(Of TextBox)()
    Where txt.Text.Length = 0
    Select txt.Name

    If emptyTextBoxes.Count >= -1 Then
        MessageBox.Show(String.Format("Please fill following textboxes: {0}", String.Join(",", emptyTextBoxes)))
    Else
        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 If
End Sub

我没有收到任何错误,即使所有文本框都已填满,也会显示该消息,消息框未指定任何文本框为空,并阻止数据网格视图填充。

我很擅长编码,所以请详细解释一下你的解决方案。感谢

2 个答案:

答案 0 :(得分:2)

.Count >= -1

如果计数为空,则计数为0

If emptyTextBoxes.Count <> 0 Then
    MessageBox.Show(String.Format("Please fill following textboxes: {0}", String.Join(",", emptyTextBoxes)))
Else
    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 If

答案 1 :(得分:0)

您可以尝试在没有内容的每个文本框中循环容器(即表单,面板,分组框),然后在没有内容的文本框时递增。

示例:

          Dim checkr as integer = 0
          Dim this As Control
          For Each this In that.Controls
           If TypeOf this Is TextBox Then
               If this.text = "" then
                 Checkr += 1
               End if
             End If
           Next

           If checkr > 0 then
              msgbox("Cannot proceed because a textbox has no content")
           Else
              '......(what you were gonna do)
           End If
相关问题