0

画面に 44 個のテキスト ボックスがあります (正確には RadNumericTextBoxes ですが、それは密接な関係ではありません)。これらは、プログラムで複製できない共通の命名パターン (rntb_[NameOfDBField]) に従います。

^= rntb_ という名前のコントロールごとに設定.Valueするにはどうすればよいですか? Nothing私は次のことを試みました:

Private Sub ClearValues()
    For Each c as Control in Controls
        If TypeOf c Is RadNumericTextBox Then
            TryCast(c, RadNumericTextBox).Value = Nothing
        End If
    Next
End Sub

ただし、Controls.Count = 1 で、マスター ページの名前だけが含まれています。

Controls に引数を渡す必要がありますか、それともまったく別のことをする必要がありますか? テキストボックスは「わずか」44個なので、手動でそれぞれをクリアできますが、可能であればプログラムで行いたいと思います。

4

1 に答える 1

1

RadNumericTextBoxes がコンテナではなくフォーム上にある場合、

Private Sub ClearValues()
    For Each c As Control In Me.Controls
        If TypeOf c Is RadNumericTextBox Then
            Dim rntb = DirectCast(c, RadNumericTextBox)
            If rntb.Name.StartsWith("rntb_") Then
                rntb.Value = Nothing
            End If
        End If
    Next
End Sub

しかし、たとえば GroupBox1 にある場合はMe.Controls、上記を に置き換えますGroupBox1.Controls

そしてEnd For、あなたのコードには何がありますか? For..Next ループはNext、VB.NET の本体の最後にあります。

于 2012-11-19T19:21:47.850 に答える