0

6 つのグループ ボックスと 120 のテキスト ボックスを含むフォームがあります。データベースへのデータ更新中に、空のテキスト ボックスが値「-NA-」を返すようにしたいと考えています。次のコードを試しましたが、エラーが発生し続けます。

     For i As Integer = 1 To 20
        If GroupBox1.Controls("CollarTB" & i).Text = String.Empty Then
            GroupBox1.Controls("CollarTB" & i).Text = "-NA-"
        End If

        If Me.GroupBox1.Controls("CollarTB" & i).Text = String.Empty Then
            Me.Controls("CollarTB" & i).Text = "-NA-"
        End If

        If Form9.Controls(i).Text = String.Empty Then
            Form9.Controls(i).Text = "-NA-"
        End If

    Next



        If FrntTB1.Text = String.Empty Then FrntTB1.Text = "-NA-"

これはどのように行うことができますか?解決策はありますか?

また、グループボックスに約 180 個のテキストボックスを含む別のものがあります。データベースの 1 つの行から一度にすべてのデータを入力したいと考えています。出来ますか?もしそうなら、どのように?

4

1 に答える 1

0

を使用linqして から をフィルタリングし、 をフィルタリングしてから、groupboxes要件に従って値をそれに設定するだけです。このコードを試して、formgroupboxestextboxestextboxes

Linq タイプ I:

For Each xGroupBox As GroupBox In Me.Controls.OfType(Of GroupBox)()

    For Each xTextBox As TextBox In xGroupBox.Controls.OfType(Of TextBox)()

        If xTextBox.Name.StartsWith("CollarTB") andalso xTextBox.text = string.empty Then
            xTextBox.Text = "-NA-"
        End If

    Next

Next

Linq タイプ II:

 For Each xGroupBox As GroupBox In Me.Controls.OfType(Of GroupBox)()
     For Each xTextBox As TextBox In From xTxtbx In xGroupBox.Controls.OfType(Of TextBox)() Where xTxtbx.Text.StartsWith("CollarTB") and xTxtbx.text = string.empty
         xTextBox.Text = "-NA-"
     Next
 Next

非 Linq バージョン:

For Each xControls As Control In Me.Controls

    If TypeOf xControls Is GroupBox Then

        For Each xControls1 As Control In xControls.Controls

            If TypeOf xControls1 Is TextBox Then

                If xControls1.Name.StartsWith("CollarTB") andalso xControls1.text = string.empty  Then

                    xControls1.Text = "-NA-"

                End If

            End If

        Next

    End If
    Next
于 2013-04-20T04:45:16.640 に答える