2011-10-20 64 views
0
  for (int i = 1; i < 3; i++) 
      { 
       int randomSpeed = RandomNumber(2, 10); 

       "apa" + i.Left -= randomSpeed; 
      } 

看看"apa" + i.Left -= randomSpeed;这是错误的。在C#中的for循环名称上设置“left”属性

我有名称为apa1,apa2和apa3的PictureBoxes。

我想设置的名称APA的左+我

我怎么可以设置左,以随机速度在回路的每个人?

+0

这是ASP.NET,WinForms还是WPF? – ChrisF

回答

4

当你有一个有限数量的控制,它可能更容易只是做:

foreach (var control in new[] { apa1, apa2, apa3 }) 
{ 
    int randomSpeed = RandomNumber(2, 10); 
    control.Left -= randomSpeed; 
} 
+0

我得到两次;预计在新的[] – Karem

+0

var控制看到更新,它应该'foreach'不'为' –

3

你将不得不把它们放在一个数组中。加int s没有left属性。

PictureBox[] apas = new PictureBox[] { apa1, apa2, apa3 }; 

     for (int i = 0; i < apas.Length; i++) 
     { 
      int randomSpeed = RandomNumber(2, 10); 

      apas[i].Left -= randomSpeed; 
     } 
+0

他试图建立控制名称“apa1”,所以他可以做'apa1.Left'。 – ChrisF

+0

正是chrisf .. – Karem

+0

我在apas.Count上得到错误; – Karem

2

你想改变一个名为控制的Left财产(“APA” + I),右?

你可以Find控制:

(PictureBox)this.Controls.Find("apa" + i, true)[0].Left -= randomSpeed 

不要忘记添加错误检查。

+0

我得到错误没有超载的方法查找需要1参数 – Karem

+0

你真的不需要将结果投影到PictureBox,因为你是只设置属性“左”,它在控制中定义 –

+0

谢谢,更新。 – CodeCaster