2015-10-05 80 views
0

我正在嘗試編寫匹配遊戲。我的想法是:如果PictureBox點擊事件

(1)。當某個pictureBox1被點擊時,它變得不可見

(2)。 A MessageBox顯示,提示「選擇另一個框。」

(3)。最後,我需要編寫一個if/else聲明,如果點擊了pictureBox13,它將變爲不可見; else(如果點擊了另一個pictureBox)a MessageBox提示「再試一次」。而這兩個圖片框變成無形的,但我不知道我做錯了:

// Program From Below 
    private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Now Pick Another Hidden Picture!"); 
     pictureBox1.Visible = false; 

     if (pictureBox13_Click) 
     { 
      MessageBox.Show("Great!"); 
      pictureBox13.Visible = false; 
     } 
     else 
     { 
      MessageBox.Show("Try Again!"); 
     } 


    } 

有下if (pictureBox13_Click)

+1

'如果(pictureBox13_Click)'?可能它是一個方法的名稱而不是布爾變量。點擊時只讓每個「PictureBox」不可見。 –

+4

每個PictureBox都需要自己的Click事件代碼,或者創建一個所有PictureBox控件都使用的常規單擊方法,並通過檢查sender參數來確定哪個PictureBox被點擊。 – LarsTech

+0

除了以前的評論:我認爲你將不得不將發件人投到PictureBox ..然後你將能夠檢查其ID或名稱屬性.. – johnyTee

回答

2

一個紅色的波浪線這將是更好的,如果每一個圖片框有它的一個狀態,然後您將使用Click_Event進行操作。微軟有一個匹配的遊戲這裏一個全面的教程:https://msdn.microsoft.com/en-us/library/dd553235.aspx

+0

是的,這篇文章看起來像一個很好的答案,特別是步驟#4在事件處理程序上。 – jsh

+0

感謝您的意見!但是,我想知道if/else語句是否可以用作:如果點擊了某些內容,則會發生某種情況,其他情況...不要擔心它們之間的內容。只需要知道如何編程「如果點擊」聲明。 –

0

您可以創建所選盒的int(在這個例子中,BOX1和BOX2),這都設置爲0,然後單擊事件創建其中設置int點擊框。

if(box1 != 0) 
    { 
     box2 = 'insert selected box number' 
    } 
    else 
    { 
     box1 = 'insert selected box number' 
    } 

兩個盒子已經被選擇之後,兩個integers可以被設置爲假,這允許您使用的switch代替if,如果需要對於每對單獨的if聲明可能基本上縮短代碼的圖片。

1

或其他建議,你可以使用同一個事件處理您的所有pictureBoxes投下senderPictureBox看PB被點擊了什麼:

List<string> selectedPictureBoxes; 

public MyForm() // ctor 
{ 
    selectedPictureBoxes = new List<string>(); 

    foreach(Control c in this.Controls) 
     if(c is PictureBox) c.Click += pictureBox_Click; 
} 

private void pictureBox_Click(object sender, EventArgs e) 
{ 
    PictureBox _clicked = sender as PictureBox; 

    if(!selectedPictureBoxes.Contains(_clicked.Name)) 
     selectedPictureBoxes.Add(_clicked.Name); 
    else .... 
}