2011-10-20 129 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