Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中使用计时器停止图像的乱序#_C#_Winforms_Timer_Image - Fatal编程技术网

C# 如何在C中使用计时器停止图像的乱序#

C# 如何在C中使用计时器停止图像的乱序#,c#,winforms,timer,image,C#,Winforms,Timer,Image,我正在创建一个简单的老虎机。一个按钮用于启动,一个Picturebox的每个磁贴上有三个停止按钮。我的问题是每次单击每个停止按钮时,Picturebox都不会停止 我需要帮助,如果我在相应的Picturebox上单击停止按钮,它将停止,这两个按钮将继续洗牌图片。然后,如果我单击另一个停止按钮,另一个将停止,依此类推 以下是我目前拥有的: namespace SlotMachine { class SlotMac { private Form f;

我正在创建一个简单的老虎机。一个按钮用于启动,一个Picturebox的每个磁贴上有三个停止按钮。我的问题是每次单击每个停止按钮时,Picturebox都不会停止

我需要帮助,如果我在相应的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();
        }
    }
}
名称空间SlotMachine
{
类SlotMac
{
私人表格f;
按钮btn1=新按钮();//第一站
按钮btn2=新按钮();//第二次停止
按钮btn3=新按钮();//第三站
按钮btn4=新建按钮();//开始
计时器时钟;//滴答声
计时器时钟1;//滴答声
计时器时钟2;//滴答声
Int32 tick=0;
公共SlotMac()
{
f=新形式();
f、 Text=“老虎机”;
//f、 尺寸=新尺寸(800700);
f、 FormBorderStyle=FormBorderStyle.FixedSingle;
}
PictureBox[]图片=新的PictureBox[7];
PictureBox pb=新PictureBox();
公开发售()
{
int i=0;
时钟=新定时器();
时钟间隔=1000;
Clock.Tick+=新事件处理程序(Clock\u Tick);
时钟1=新定时器();
时钟1.间隔=1000;
Clock1.Tick+=新事件处理程序(Clock1_Tick);
时钟2=新定时器();
时钟2.间隔=1000;
Clock2.Tick+=新事件处理程序(Clock2_Tick);
int x=50;
对于(i=0;i
每台自动售票机设置图片中的所有七幅图像。如果其中一个仍在更新所有图片,那么阻止其中一个也无济于事。

我认为您需要为每个时钟创建一个单独的PictureBox阵列。否则,显示内容的PictureBox将持续反映其他两个计时器所做的更改

基本上,如果它们都基于相同的阵列,那么当其他时钟改变时