私が必要としているのは、別のクラスにあるイベント ハンドラー (たとえば、毎秒) をタイマーに起動させることです。これは、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
}
}
}
}