0

メソッドを他のメソッドで動的に呼び出そうとしましたが、このコードは機能しません。どうすればできますか?

#region Form1_Load()
private void Form1_Load(object sender, EventArgs e)
{
    Load();
    //this line 
    InitTimer(this.Form1_Load(sender,e));
}
#endregion

#region Timer()
public void InitTimer(dynamic _method)
{
    System.Windows.Forms.Timer timer1;
    timer1 = new System.Windows.Forms.Timer();
    timer1.Tick += new EventHandler(_method);
    timer1.Interval = 5000; // in miliseconds
    timer1.Start();
}
#endregion
4

2 に答える 2

2

あなたが探しているのはデリゲートです。デリゲートは本質的に、後で呼び出すことができるメソッド ポインターです。

    private void Form1_Load(object sender, EventArgs e)
    {
        Load();
        //this line 
        InitTimer(() => this.Form1_Load(sender,e));
    }

    public void InitTimer(Action target) 
    {
        System.Windows.Forms.Timer timer1;
        timer1 = new System.Windows.Forms.Timer();
        timer1.Tick += (sender, e) => target();
        timer1.Interval = 5000; // in miliseconds
        timer1.Start();
    }
于 2013-03-13T23:48:37.973 に答える
0
#region Form1_Load()
private void Form1_Load(object sender, EventArgs e)
{
    Load();
    //this line 
    InitTimer(OtherLoad);
}
#endregion

#region Timer()

private void OtherLoad(object sender, EventArgs e)
{...}

public void InitTimer(EventHandler _method)
{
    System.Windows.Forms.Timer timer1;
    timer1 = new System.Windows.Forms.Timer();
    timer1.Tick += _method;
    timer1.Interval = 5000; // in miliseconds
    timer1.Start();
}
#endregion

重要: タイマーを何度も何度もセットアップするのを避けるために、タイマーで別のメソッドを呼び出すようにします (私は "OtherLoad" を使用しました)。

于 2013-03-13T23:54:47.260 に答える