C#更改NumericUpDown.Increment Foreach NumericUpDown在GroupBox内部其他GroupBox(子)

时间:2018-04-07 17:13:05

标签: c# winforms foreach numericupdown

我有一个名为“NumericIncrementPrecision”的NumericUpDown控件,当我更改此NumericUpDown的值时,它会改变几乎所有NumericUpDown框的增量:

NumericTriggerLocationX.Increment = (decimal)NumericIncrementPrecision.Value;
NumericTriggerLocationY.Increment = (decimal)NumericIncrementPrecision.Value;
[...]
NumericObjectLocationYaw.Increment = (decimal)NumericIncrementPrecision.Value;

但是我在FormBox里面的TabBox里面有100多个NumericUpDown控件,我已经尝试了这个,但没有发生任何事情:

foreach (Control c in TabEditor.Controls)
{
    foreach (Control childc in c.Controls)
    {
        if (childc is NumericUpDown)
        {
            NumericUpDown test = (NumericUpDown)childc;
            test.Increment = (decimal)NumericIncrementPrecision.Value;
        }
    }
}

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我们需要更深入:

foreach (Control c in TabEditor.Controls)
{
    // c will be a TabPage
    foreach (Control childc in c.Controls)
    {
        // childc is a control inside TabPage, e.g GroupBox
        foreach (NumericUpDown nud in childc.Controls.OfType<NumericUpDown>())
        {
            nud.Increment = (decimal)NumericIncrementPrecision.Value;
        }
    }
}

如果所有NumericUpDow都在一个GroupBox中,那么只检查那个GroupBox:

foreach (NumericUpDown nud in singleGroupBox.Controls.OfType<NumericUpDown>())
{
    nud.Increment = (decimal)NumericIncrementPrecision.Value;
}