0

私が今やりたいのは、25秒が発生するとイベントが発生するように、バックグラウンドですべての発生の後に5秒を合計するプログラムを作成することです。

助言がありますか?

これが何が起こっているかのコードです

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

私のプログラムに実行させたいのは、ITIpanelまたはITItimersが発生した回数をカウントし、いずれかの後に新しいイベントを発生させることです。できれば、タイマーが20回発生したことをお勧めします。

4

1 に答える 1

1

基本的な質問についてはたくさんのテキストのようです-私がそれを理解しているのなら。既存のイベントと同様の別のイベントを実行するだけです。

    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);
            }
        }
于 2012-04-11T05:44:15.410 に答える