private void CleanForm()
{
foreach (var c in this.Controls)
{
if (c is TextBox)
{
((TextBox)c).Text = String.Empty;
}
}
}
この方法は機能せず、コントロールはクリアされません。それはうまくコンパイルされますが、何もしません。フォーム内のすべてのテキストボックスのテキストをクリアするには?
アイデア?
脇に、 'TextBox'の代わりに' TextBoxBase'を指定することもできます。それは自動的に複数行のテキストボックス、豊富なテキストボックスなどを含みます。 – Timwi
また、 'TextBox'にキャストする必要もありません。 – SLaks
このコードはそのまま動作しますが、各ステートメントの(this.Controls)がテキストボックスを持つ実際のコントロールであることを確認してください。たとえば、フォームがあり、tableLayoutPanelがあり、テキストボックスがtableLayoutPanel内のforeach(this.Controls内のvar c)は機能しません。foreach(tableLayoutPanel1.Controls内のvar c)でなければなりません。 – Hammy