1

バインドされたデータグリッドビュー、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

エラーは発生しません。すべてのテキストボックスが入力されていてもメッセージが表示され、メッセージボックスはテキストボックスを空として指定せず、データグリッドビューの入力を停止します。

私はコーディングに非常に慣れていないので、あなたの解決策をより詳細に説明してください。ありがとう

4

2 に答える 2

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
于 2013-07-24T17:33:19.050 に答える
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
于 2013-11-20T09:28:05.100 に答える