【问题标题】:Checking if text boxes are empty检查文本框是否为空
【发布时间】:2013-07-24 17:28:55
【问题描述】:

我有一个带有绑定 datagridview、4 个文本框和一个按钮的 winform。通过单击按钮调用“fillby”语句,数据加载到datagridview,文本框的内容成为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

我没有收到任何错误,即使所有文本框都已填充,消息也会出现,消息框没有将任何文本框指定为空并停止填充 datagridview。

我对编码很陌生,所以请更详细地解释您的解决方案。谢谢

【问题讨论】:

    标签: vb.net winforms textbox


    【解决方案1】:
    .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
    

    【讨论】:

    • 这并不能解决问题。没有错误,但无论是空的还是填充的 texbox,都没有消息框。谢谢
    • @David - TextBox 控件似乎没有 .Name 属性,也许您打算使用 Select txt.ID
    • 我可能错了,但所有控件都应该有一个 Name 属性。 ID 不是视觉工作室的 intelisense 建议的选项。不过我可能错了。
    • @David - 抱歉,我正在查看 System.Web.UI 控件而不是 System.Windows.Forms 控件。您只需通过调试器运行代码并检查“emptyTextBoxes”可枚举,您可以先使用 ToArray 方法将其转换为数组。
    • 就像我说的,我对编码很陌生,所以这个答案对我没有多大帮助。如果可能的话,我真的需要一些示例代码的更详细的答案。
    【解决方案2】:

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

    例子:

              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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 2022-01-09
      • 2021-11-03
      相关资源
      最近更新 更多