我希望将值分配给名为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++;
}
答案 0 :(得分:4)
我会用这种方法:
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));
}
这里的一大优点是您的代码是经过编译时检查的,因此如果您开始删除或重命名控件,那么您将遇到编译错误而不是运行时错误。
答案 1 :(得分:0)
您可以尝试:
for (int i = 0; i < readBuf.Length; i++)
{
((NumericUpDown)Controls.Find("numericUpDown" + (i+1))).Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
}