2017-01-10 18 views
-2

私はパネルを持っているユーザーがテキストボックスに文字列を入力し、ユーザーが情報を保存したり、戻るボタンをクリックしたときに数値カウンターとチェックボックスに10進数を入力すると、それを自動的に行う新しいフォームケースでしたが、パネルではcontrols.clearが見えましたが、パネルのテキストボックスがすべて削除されていました。すべてのパネル値をクリアする

答えて

0

あなたはそれらすべてに名前を付けることなく、すべてのコントロールをクリアするためにControls Collectionを使用することができます。

foreach (Control c in Page.Controls) 
{ 
    TextBox  t = (c as TextBox); 
    NumericUpDown n = (c as NumericUpDown); 

    if (t != null) 
     t.Text = ""; 

    if (n != null) 
     n.Value = 0; 
} 

あなたは子コントロールを処理するために、ループや再帰複数を使用する必要があります。

+0

これを行う機能を実行していますが、page.controlsでエラーが表示されるのはページ単位ですか?フォーム名に変更しようとしましたが、動作しませんでした –

+0

これです。コントロールは動作しましたが、チェックボックスには表示されません。 チェックボックスcb =(cチェックボックス); if(cb.Checked) cb.Checked = false;しかし、それは私にnullの例外を与える私は4つのチェックボックスがあり、いくつかはチェックされているかどうかチェックされていない場合、私はヌーを与えるだろうか、 –

+0

チェックボックスではないコントロールの場合はnullになります。 if(cb!= null && cb.Checked)cb.Checked = false; – buffjape

0

Panels.Clear(); Panelコンテナ内のすべての子コントロールを削除します。通常は、デフォルトに戻すコントロールのデフォルト値を手動で設定するか、コントロールを繰り返してリセットすることができます。

個人的には、リセットするコントロールの種類が複数ある場合は手動で行うことをお勧めします。そうしないと、いくつかの問題が発生する可能性があります。

だから例として:

Textbox.Text = ""; 
Textbox.Text = string.Empty; 
Textbox.Text.Clear(); 
0

あなたがパネルからすべてのコントロールを削除する方法を呼んでいます。

代わりに、パネルのコントロールの各値を適切なデフォルトに設定するメソッドをフォームに記述する必要があります。テキストボックスの値を空の文字列に、数値のアップダウンを0.0に設定します。そのメソッドの名前はClearPanelValues()などです。パネル内の値をクリアする場合は、ClearPanelControls()に電話してください。

public void ClearPanelValues() 
{ 
    textBox1.Text = ""; 
    textBox2.Text = ""; 
    numericUpDown1.Value = 0; 
    // etc. etc. 
} 
関連する問題