NumericUpDown未显示值
本文关键字:显示 NumericUpDown | 更新日期: 2023-09-27 18:22:21
我正在重置表单控件。用程序更改NumericUpDown
Control的值后,它不显示该值
它实际上更改了值,但控件上的文本仍然为空。
这是我的代码
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
状态上使用'else-if'会更干净,而不是显式检查NumericUpDown:
public void ResetFields(Control.ControlCollection Controls)
{
foreach (Control control in Controls)
{
if (control is TextBox)
{
control.Text = string.Empty;
}
else if (control is NumericUpDown)
{
((NumericUpDown)control).Value = 3;
}
else if (control.Controls.Count > 0)
{
this.ResetFields(control.Controls);
}
}
}
NumericUpDown
控件具有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);
}