2013-07-24 195 views
1

我有一個綁定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填充。

我對編碼非常陌生,所以請詳細解釋您的解決方案。由於

回答

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

這並不固定。沒有錯誤,但沒有消息框,無論是空的或填充的texboxes。謝謝 – David

+0

@David - TextBox控件似乎沒有.Name屬性,也許你打算使用Select txt.ID –

+0

我可能是錯的,但所有的控件都應該有一個Name屬性。 ID不是視覺工作室的智力建議選項。但我可能是錯的。 – David