-3

フォーム コントロールをリセットしています。コントロールの値をプログラムで変更した後、値がNumericUpDown表示されません。
実際には値が変更されますが、コントロールのテキストは空白のままです。

これは私のコードです

public void ResetFields(Control.ControlCollection Controls)
{
foreach(Control control in Controls)
{
   if (control is TextBox)
   {
      control.Text = string.Empty;
   }
   if (control is NumericUpDown)
   {
      NumericUpDown updown = control as NumericUpDown;
      updown.Value = 3;
   }

   if (control.Controls.Count > 0)
   {
      this.ResetFields(control.Controls);
   }
}
}

解決策があり、回答として投稿しました。

4

2 に答える 2

1

NumericUpDownControl には子Textboxコントロールがあります。
したがって、NumericUpDownコントロールの値が変更された後、次のループでさらに子コントロールが取得され、(control is TextBox)条件をチェックしてテキストを空にリセットしていました。

public void ResetFields(Control.ControlCollection Controls)
{
foreach(Control control in Controls)
{
   if (control is TextBox)
   {
      control.Text = string.Empty;
   }
   if (control is NumericUpDown)
   {
      NumericUpDown updown = control as NumericUpDown;
      updown.Value = 3;
   }

   if (control.Controls.Count > 0)
   {
      this.ResetFields(control.Controls);
   }
}
}

解決策はこの変更でした:

   if (control.Controls.Count > 0 && !(control is NumericUpDown))
   {
      this.ResetFields(control.Controls);
   }
于 2013-07-14T20:02:46.787 に答える