2013-07-24 9 views
1

У меня есть winform со связанным datagridview, 4 текстовыми полями и кнопкой. При нажатии кнопки вызывается оператор 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

Вы можете попробовать петлю в вашем контейнере (т.е. форма, панель, Groupbox) для каждого текстового поля без содержания, то приращение всякий раз, когда есть текстовое поле, у которого нет содержимого.

Пример:

  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

Это не исправить. Нет ошибок, но нет сообщений ни независимо от пустых или заполненных текстовых ящиков. Спасибо – David

+0

@David - Элементы управления TextBox, похоже, не имеют свойства .Name, возможно, вы хотели использовать Select txt.ID –

+0

Возможно, я ошибаюсь, но все элементы управления должны иметь свойство Name. Идентификатор не является вариантом, предложенным специалистами visual studio. Возможно, я ошибаюсь. – David

Смежные вопросы