1

私が必要としているのは、別のクラスにあるイベント ハンドラー (たとえば、毎秒) をタイマーに起動させることです。これは、Windows フォーム プログラムの一部です。

デリゲートを使用してイベント ハンドラーを "呼び出す" ことを試みましたが、構文エラーが発生し続けます。簡単なコード例で誰かが私を正しい方向に導くことができますか?

以下のコードは私のスタートです。コメント部分は正常に動作しますが、Windows タイマーが起動したときにイベントを起動したいと考えています。

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public event TimerHandler Tick;
        public EventArgs e = null;
        public delegate void TimerHandler(Timer t, EventArgs e);

        public class Timer
        {
            public event TimerHandler Tick;
            public EventArgs e = null;
            public delegate void TimerHandler(Timer t, EventArgs e);
        }

        public class Listener
        {
            public static int ticker = 0;
            public void Subscribe(Timer t)
            {
                t.Tick += new Timer.TimerHandler(HeardTick);
            }
            private void HeardTick(Timer t, EventArgs e)
            {
                //lblTimer.Text = ticker.ToString(); //Don't know how to change forms control
                ticker++;
            }
        }

        private void btnStart_Click_1(object sender, EventArgs e)
        {
            Timer t = new Timer();
            Listener l = new Listener();
            l.Subscribe(t);
            //t.Start();
        }

        public void timer1_Tick(object sender, EventArgs e)
        {
            if (Tick != null)
            {
                Tick(this, e); // "this" is incorrect, invalid argument
            }
        }
    }
}
4

1 に答える 1