循环通过顺序控制名称C#
我希望为名为循环通过顺序控制名称C#,c#,winforms,for-loop,foreach,C#,Winforms,For Loop,Foreach,我希望为名为numericUpDown1,numericUpDown2等的NumericUpDowns赋值。我希望实现如下目标: for (int i = 0; i < readBuf.Length; i++) { numericUpDown[i + 1].Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0)); } for(int i=0;i
numericUpDown1
,numericUpDown2
等的NumericUpDowns赋值。我希望实现如下目标:
for (int i = 0; i < readBuf.Length; i++)
{
numericUpDown[i + 1].Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
}
for(int i=0;i
我尝试的是这里描述的方法:,但是当我像这样使用它时,它没有给出预期的结果
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 allNumUpDwn=this.GetChildControls();
int i=0;
foreach(allNumUpDwn中的数字上下nud)
{
num.Value=Convert.ToDecimal(BitConverter.ToSingle(readBuf[i],startIndex:0));
i++;
}
您可以尝试:
for (int i = 0; i < readBuf.Length; i++)
{
((NumericUpDown)Controls.Find("numericUpDown" + (i+1))).Value = Convert.ToDecimal(BitConverter.ToSingle(readBuf[i], startIndex: 0));
}
for(int i=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));
}
var nuds=new[]
{
numericUpDown1,numericUpDown2,
数字上下3,数字上下4,
数字上下5,数字上下6,
//等
};
for(int i=0;i
这里最大的优点是,您的代码是编译时检查的,因此如果您开始删除或重命名控件,那么您将出现编译错误,而不是运行时错误。我同意Enigmativity。这种方法更好,除非你的数字设置是动态构建的。@Enigmativity啊,我希望我可以避免在数组中重复写入每个数字设置,但是如果这是需要做的,那就必须做。谢谢你的回答@RikusHoney-您始终可以使用
控件收集数组。查找和LINQ,但如果存在运行时错误,则会返回运行时错误。究竟readBuf
是什么?你必须调试你的应用程序。在代码中插入断点,看看发生了什么。@Dmitry我正在从另一个进程读取内存,并使用numericUpDown控件对其进行更改,但有时程序中的值会更改,而numericUpDowns不会更新,因此我需要再次读取内存。