2014-02-22 1 views
0

타이머를 사용하여 타이머에 의해 지정된 시간 동안 그림 상자에서 수행하는 클릭 위치를 기록합니다. 다음 단계로 PictureBox에서 칠한 작은 원을 표시하기 위해 PictureBox 페인트 이벤트를 추가했습니다. 완벽하게 작동하지만 타이머 틱은 어떻게 든 비활성화됩니다.타이머 틱 이벤트는 Picturebox 페인트 이벤트에 의해 자동으로 비활성화됩니다.

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); 

: 여기

this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); 

가의 InitializeComponent에서 타이머 1과 picturebox1 설정() 함수입니다 : 다음 나는 형태의 InitializeComponent를() 함수에서 다음 줄을 주석 경우, 타이머가 작동하기 시작 것을 발견 또한 Timer1_Click 및 PictureBox1_Click 기능은 아래와 같습니다 : 나는 한 번에 그 중 하나를 사용하지만 모두 functionaliti를 사용할 수 없습니다 수 있습니다

따라서
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); 

    } 

동시에. 이 문제를 해결하는 데 도움을주십시오.

+0

타이머를 어떻게 만드는지 보여주십시오. –

+0

동일한 그림 상자에 대한 타이머 문 액세스? 그림 상자와 관련된 타이머 코드를 포함시킬 수 있습니까? 또는 내부 또는 시간에 Paint 이벤트에 그림 상자에 액세스하는 부분을 위임하려고합니까? –

+0

다음은 InitializeComponent() 함수에서 타이머를 만들고 설정하는 코드의 일부입니다. this.timer1 = new System.Windows.Forms.Timer(); this.timer1.Interval = 1000; this.timer1.Tick + = new System.EventHandler (this.timer1_Tick); – Mani

답변

0

코드가 어떻게 생겼는지는 모르겠지만 Enable = True 대신 타이머 Start() 메서드를 실행하는 것이 좋습니다.

또한 ... 다른 스레드에서 PictureBox 페인트 이벤트에 대한 코드를 수행하고 있습니까?

여전히 작동하지 않는다면 더 좋은 아이디어를 얻을 수 있도록 더 많은 코드를 제공해주십시오.

건배

+0

답장을 보내 주셔서 감사합니다. 이미 Start() 함수를 사용하고 있습니다. – Mani

관련 문제