2014-08-30 70 views
0

在C#中,我正在製作平臺遊戲。地形是pictureboxes,並與碰撞系統例如。我需要有1個名字才能引用多個選定的圖片框,因爲它與另一個圖片框會產生相同的功能太多的代碼。 所以,例如,如果「picturebox1」和「picturebox2」被引用爲「pictureall」,然後,如果執行這樣的代碼:引用具有1個名稱的多個對象/變量

pictureall.Visible = false; 

既「picturebox1」和「picturebox2」將是不可見的。那麼,我怎樣才能參考(在這個例子中)帶有1個名字的2個picturebox?

編輯: 我主要打算在If語句中使用它。所以,舉個例子: if(pictureall.Visible == true)MessageBox.Show(「true」); 如果任何 picturebox是可見的,這是事實。

/維克托

+4

使用數組或其他集合讓你可以快速遍歷所有pictureboxes – 2014-08-30 17:56:47

回答

1

您創建一個名爲Grouppictures

  1. 這將包含名單的圖片作爲成員變量
  2. 一種方法SetVisibility(布爾可見)
  3. 在上述方法中的自定義類你將循環並設置所有圖片的可見性
  4. 但您將調用方法爲GrouppicturesObj.SetVisibity(false);
+0

根據您的編輯..你仍然可以通過添加一個方法來解決這個問題d返回可見性狀態(基本上遍歷它包含的圖像並檢查其可見性並返回狀態)。你在if條件下使用if(GroupPicturesObj.GetVisibility()== true) – 2014-08-30 18:16:34

+0

謝謝,你給了我一個主意。 – thesTeel8 2014-08-30 18:40:19

0

如果你不想爲紀V M建議使用自定義的集合類,你可以把的圖片框選擇一個集合中,如List<T>和使用可用的(擴展)的方法,例如

List<PictureBox> pictureBoxes = new List<PictureBox>(); 

// fill the list 
pictureBoxes.Add(...); 

// do something to all boxes in the list 
pictureBoxes.ForEach(box => box.Visible = true); 

// ask something about the boxes in the list 
if (pictureBoxes.Any(box => box.Visible)) 
{ 
    // at least one box visible 
} 
// or: 
if (pictureBoxes.All(box => box.Visible)) 
{ 
    // all boxes visible 
} 

參考文獻:

相關問題