C# Picturebox paint事件会自动禁用计时器勾选事件

C# Picturebox paint事件会自动禁用计时器勾选事件,c#,events,timer,picturebox,C#,Events,Timer,Picturebox,我正在使用计时器记录我在picturebox中执行的单击位置,时间由计时器计时。作为下一步,我添加了PictureBox paint事件,以显示我在PictureBox中点击的小圆圈。它工作得很好,但计时器滴答声不知怎么被禁用了。接下来,我注意到,如果我从FORM InitializeComponent()函数中注释掉以下行,计时器开始工作: this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pic

我正在使用计时器记录我在picturebox中执行的单击位置,时间由计时器计时。作为下一步,我添加了PictureBox paint事件,以显示我在PictureBox中点击的小圆圈。它工作得很好,但计时器滴答声不知怎么被禁用了。接下来,我注意到,如果我从FORM InitializeComponent()函数中注释掉以下行,计时器开始工作:

this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
以下是InitializeComponent()函数中的计时器1和picturebox1设置:

this.timer1 = new System.Windows.Forms.Timer();
        this.timer1.Interval = 1000;
        this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
        // 
        // pictureBox1
        // 
        this.pictureBox1.BackColor = System.Drawing.SystemColors.ControlLightLight;
        this.pictureBox1.Image = global::Omers_project.Properties.Resources.img_002;
        this.pictureBox1.Location = new System.Drawing.Point(282, 158);
        this.pictureBox1.Name = "pictureBox1";
        this.pictureBox1.Size = new System.Drawing.Size(694, 492);
        this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
        this.pictureBox1.TabIndex = 0;
        this.pictureBox1.TabStop = false;
        this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
        this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
此外,下面还提供了Timer1\u Click和PictureBox1\u Click功能:

private void timer1_Tick(object sender, EventArgs e)
    {
        passes--;
        textBox_time_passed.Text = passes.ToString();
        if (passes == 0)
        {
            timer1.Stop();
            MessageBox.Show("Time is up"); 
        }

    }

private void pictureBox1_Click(object sender, EventArgs e)
    {
        MouseEventArgs eM = (MouseEventArgs)e;
        temp_storage.x = eM.X;
        temp_storage.y = eM.Y;

        myList.Add(temp_storage);
        count++;
        textBox6.Text = Convert.ToString(count);

    }

因此,我一次只能使用其中一个功能,但不能同时使用这两个功能。请帮助我解决此问题。

我不知道您的代码是什么样子,但我建议执行timer
Start()
方法,而不是
Enable=True

还有。。。您是否在其他线程中对PictureBox paint事件执行任何代码

如果它仍然不起作用,请提供更多的代码,这样我们可以有一个更好的想法


干杯

请演示如何创建计时器。您的计时器语句是否可以访问同一图片框?如果可以,请包括与图片框相关的计时器代码?或者尝试在时间内或绘画事件中委托访问图片框的部分?以下是有关创建和设置计时器(在InitializeComponent()函数中)的代码部分:this.timer1=new System.Windows.Forms.timer();this.timer1.Interval=1000;this.timer1.Tick+=新的System.EventHandler(this.timer1\u Tick);不要将代码放在注释中,单击“编辑”按钮并更新您的问题。@V-SHY Yes它访问相同的Picturebox。只有一个picturebox,还有一个开始按钮,当我按下这个按钮时,计时器开始计时,直到它停止,picturebox中的所有点击都存储在一个列表中。因此,在picturebox\u Click回调函数中,我存储了鼠标单击的位置。