我有一个带有绑定数据网格视图的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
我没有收到任何错误,即使所有文本框都已填满,也会显示该消息,消息框未指定任何文本框为空,并阻止数据网格视图填充。
我很擅长编码,所以请详细解释一下你的解决方案。感谢
答案 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