我希望将值分配给名为numericUpDown1
,numericUpDown2
等的NumericUpDowns。我想要实现的是这样的:
for (int i = 0; i < readBuf.Length; i++)
{
numericUpDown[i + 1].Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
}
我尝试做的是这里描述的方法:Loop through Textboxes,但是当我像这样使用它时,它没有给出预期的结果
var allNumUpDwn = this.GetChildControls<NumericUpDown>();
int i = 0;
foreach (NumericUpDown nud in allNumUpDwn)
{
nud.Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
i++;
}
最佳答案
我会使用这种方法:
var nuds = new []
{
numericUpDown1, numericUpDown2,
numericUpDown3, numericUpDown4,
numericUpDown5, numericUpDown6,
// etc
};
for (int i = 0; i < readBuf.Length; i++)
{
nuds[i].Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
}
这里的最大优点是您的代码经过编译时检查,因此,如果您开始删除或重命名控件,则将遇到编译错误,而不是运行时错误。