2011-08-14 21 views
0

我正在創建一個簡單的老虎機。開始的一個按鈕,以及Picturebox的每個圖塊上的三個停止按鈕。我的問題是每次點擊每個停止按鈕時,Picturebox都不會停止。如何停止使用C中的定時器對圖像進行洗牌#

我需要幫助,如果我點擊相應的Picturebox上的停止按鈕,它將停止,並且兩者將繼續洗牌圖片。然後,如果我點擊另一個停止按鈕,另一個將停止,等等。

下面是我對現在:

namespace SlotMachine 
{ 
    class SlotMac 
    { 
     private Form f; 
     Button btn1 = new Button(); // First stop 
     Button btn2 = new Button(); // Second stop 
     Button btn3 = new Button(); // Third stop 
     Button btn4 = new Button(); // Start 
     Timer Clock; // Tick 
     Timer Clock1; // Tick 
     Timer Clock2; // Tick 
     Int32 tick = 0; 

     public SlotMac() 
     { 
      f = new Form(); 
      f.Text = "Slot Machine"; 
      //f.Size = new Size(800, 700); 
      f.FormBorderStyle = FormBorderStyle.FixedSingle; 
     } 

     PictureBox[] pics = new PictureBox[7]; 
     PictureBox pb = new PictureBox(); 

     public void Launch() 
     { 
      int i = 0; 

      Clock = new Timer(); 
      Clock.Interval = 1000; 
      Clock.Tick += new EventHandler(Clock_Tick); 

      Clock1 = new Timer(); 
      Clock1.Interval = 1000; 
      Clock1.Tick += new EventHandler(Clock1_Tick); 

      Clock2 = new Timer(); 
      Clock2.Interval = 1000; 
      Clock2.Tick += new EventHandler(Clock2_Tick); 

      int x = 50; 
      for (i = 0; i < pics.Length; i++) 
      { 
       pics[i] = new PictureBox(); 
       pics[i].Image = Image.FromFile(i+".jpg"); 
       pics[i].SetBounds(x, 100, 100, 100); 
       x += 150; 
       f.Controls.Add(pics[i]); 
      } 

      f.SetBounds(10, 20, 500, 500); 

      // STOP 
      btn1.Location = new Point(50, 250); 
      btn1.Height = 40; 
      btn1.Width = 100; 
      f.Controls.Add(btn1); 
      btn1.Text = "STOP"; 
      this.btn1.Click += new EventHandler(this.MyButtonClick); 

      // STOP 
      btn2.Location = new Point(200, 250); 
      btn2.Height = 40; 
      btn2.Width = 100; 
      btn2.Text = "STOP"; 
      f.Controls.Add(btn2); 
      this.btn2.Click += new EventHandler(this.MyButtonClick); 

      // STOP 
      btn3.Location = new Point(350, 250); 
      btn3.Height = 40; 
      btn3.Width = 100; 
      btn3.Text = "STOP"; 
      f.Controls.Add(btn3); 
      this.btn3.Click += new EventHandler(this.MyButtonClick); 

      // START 
      btn4.Location = new Point(200, 370); 
      btn4.Height = 40; 
      btn4.Width = 100; 
      btn4.Text = "START"; 
      f.Controls.Add(btn4); 
      this.btn4.Click += new EventHandler(btn4_Click); 
      f.ShowDialog(); 

     } 

     public void Stop_Click(object sender, EventArgs e) 
     { 

     } 

     public void Clock_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void Clock1_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void Clock2_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void MyButtonClick(object sender, EventArgs e) 
     { 
      // I am having troubles in this part 
      if (sender == btn1) 
      { 
       Clock.Stop(); 

      } 
      if (sender == btn2) 
      { 
       Clock1.Stop(); 
      } 
      if (sender == btn3) 
      { 
       Clock2.Stop(); 
      } 
     } 

     public void btn4_Click(object sender, EventArgs e) 
     { 
      Clock.Start(); 
      Clock1.Start(); 
      Clock2.Start(); 
     } 
    } 
} 

回答

0

我認爲你需要爲每個時鐘創建一個單獨的PictureBox數組。否則,顯示內容的PictureBox將不斷反映其他兩個定時器所做的更改。

基本上,如果它們全都基於相同的數組,那麼當其他時鐘改變數組時,第一個時鐘是否改變它並不重要;它仍然被改變。

+0

謝謝。我創建了三個PictureBox數組,並停止按鈕。但是,我將如何隨機化圖像? – Boogie

2

每個股票設定所有7張圖像的照片。如果其他人仍然更新所有圖片,它們將無法停止其中一個。