2012-04-11 13 views
0

Was ich jetzt tun möchte, ist mein Programm, im Hintergrund summieren sich die 5 Sekunden nach jedem Auftreten, so dass nach 25 Sekunden ein Ereignis ausgelöst wurde.Ein Problem, das ein Panel auf Ereignis

Irgendwelche Vorschläge?

Hier ist ein Code von dem, was auf

 private void autoshapingPanel_Paint(object sender, PaintEventArgs e) 
     { 

     } 

     //Code for Peck Counter 

     private int counter = 0; 

     public event EventHandler Clicked5TimesEvent; 

     private void OnClicked5TimesEvent() 
     { 
      if (Clicked5TimesEvent != null) 
      { 
       Clicked5TimesEvent(this, EventArgs.Empty); 
      } 
     } 

     //Stimulus with Peck Counter 
     private void pictureBox1_Click(object sender, EventArgs e) 
     { 
      counter++; 
      if (counter % 5 == 0) 
      { 
       //Code for Hopper 
       //Code to Write Data 
       string file_name = "C:\\Users\\Carter Daniels\\DATA\\AUTOSHAPINGdata.txt"; 
       System.IO.StreamWriter objWriter; 
       objWriter = new System.IO.StreamWriter(file_name, true); 
       objWriter.WriteLine("5 pecks"); 
       objWriter.WriteLine("1 Reinforcement"); 
       objWriter.Close(); 
       //ITI Panel 
       ITIpanel.Visible = true; 
      } 
     } 

     private void ITIpanel_Paint(object sender, PaintEventArgs e) 
     { 
      if (ITIpanel.Visible == true) 
      { 
       ITItimers.Enabled = true; 
      } 
     } 

     private void ITItimers_Tick(object sender, EventArgs e) 
     { 
      ITIpanel.Visible = false; 
      string file_name = "C:\\Users\\Carter Daniels\\DATA\\AUTOSHAPINGdata.txt"; 
      System.IO.StreamWriter objWriter; 
      objWriter = new System.IO.StreamWriter(file_name, true); 
      objWriter.WriteLine("5s ITI"); 
      objWriter.Close(); 
      ITItimers.Enabled = false; 
      autoshapingPanel.Visible = true; 
     } 
    } 
} 

Was ich mein Programm geht möchte hat die Anzahl der Zeiten zu tun ist, zählen die ITIpanel oder ITItimers aufgetreten und ein neues Ereignis nach dem einen oder dem anderen abfeuern, vorzugsweise ist der Timer 20 mal aufgetreten

+0

Was ist dieser "rote Stimulus", von dem Sie sprechen? Vielleicht hilft das Posten von Code, diese Frage weniger verwirrend zu machen. – Bernard

+0

Ich habe den Code hinzugefügt. Was ich möchte, dass mein Programm zählt, zählt die Anzahl der Male, die das ITIpanel oder ITItimers aufgetreten ist und feuern ein neues Ereignis nach dem einen oder dem anderen, vorzugsweise ist der Timer 20 Mal aufgetreten. – cwdaniels

Antwort

1

Es scheint viel Text für eine grundlegende Frage - wenn ich es verstehe. Mach einfach ein anderes Event, das deinem bestehenden ähnlich ist.

private int _timerCounter = 0; 
    private void ITItimers_Tick(object sender, EventArgs e) 
    { 
     if(_timersCounter++ == 5) { 
      OnTimerFired20TimesEvent(); 
      _timersCounter = 0; 
     } 

     ITIpanel.Visible = false; 
     // ... 
    } 

public event EventHandler TimerFired20TimesEvent; 

     private void OnTimerFired20TimesEvent() 
     { 
      if (TimerFired20TimesEvent != null) 
      { 
       TimerFired20TimesEvent(this, EventArgs.Empty); 
      } 
     } 
+0

Ich bekomme einen Fehler, der besagt: OnTimerFired20TimesEvent existiert in diesem Kontext nicht. – cwdaniels

+0

Wenig zu viel Hand halten. Kopieren Sie den Code nicht, sondern versuchen Sie ihn zu verstehen. Neuer Code über –

+0

Ok. Jetzt sehe ich das Problem, und eigentlich alle Sachen, die du gerade hinzugefügt hast, habe ich hinzugefügt. Wie auch immer, für das If (etc ...) hatte ich OnTimersFired20TimesEvent statt nur TimerFired20TimesEvent, etc ... – cwdaniels

Verwandte Themen