1

フォーム内のすべての TextBox を空にする関数を作成しました。

Private Sub effacer()
        For Each t As TextBox In Me.Controls
            t.Text = Nothing
        Next
    End Sub

しかし、私はこの問題を抱えていました:

タイプ 'System.Windows.Forms.Button' のオブジェクトをタイプ 'System.Windows.Forms.TextBox' にキャストできません。

これを追加しようとしましIf TypeOf t Is TextBox Then たが、同じ問題がありました

4

3 に答える 3

5

Controlsコレクションには、TextBox だけでなく、フォームのすべてのコントロールが含まれます。

代わりにEnumerable.OfType、すべてを検索してキャストするために使用できTextBoxesます。

For Each txt As TextBox In Me.Controls.OfType(Of TextBox)()
    txt.Text = ""
Next

「昔ながらの」方法で同じことをしたい場合:

For Each ctrl As Object In Me.Controls
    If TypeOf ctrl Is TextBox
        DirectCast(ctrl, TextBox).Text = ""
    End If
Next
于 2012-10-21T20:58:28.133 に答える
2
For Each t As TextBox In Me.Controls

この行は、各コントロールを にキャストしようとしTextBoxます。
それを に変更するか、反復する前にコレクションをフィルタリングするためにAs Control使用する必要があります。Me.Controls.OfType(Of TextBox)()

于 2012-10-21T20:57:33.990 に答える
0

以下は、button_click に関連付けられている groupBox からすべての radioButtons をクリアするコード行です。

groupBoxName.Controls.OfType<RadioButton>().ToList().ForEach(p => p.Checked = false);

必要に応じて適切な変更を加えてください。

于 2016-06-03T22:23:10.067 に答える