0

私は作成しています

System.Timers.Timer aTimer = new System.Timers.Timer();

メインフォーム、またはフォーム1にアクセスしたい

private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {...}

イベント、どうすればこれを行うことができますか?私はこれを行う例をグーグル経由でオンラインで見つけることができません。いくつかのグラフィックを描画していて、タイマーイベントが発生したときにそれらを変更したいと思います。このコードを他のコードに移植したいので、フォームタイマーを使用できません。また、使用できません。

ありがとう

4

4 に答える 4

0

次のコードはあまり好きではありませんが、Form1インスタンスへの参照をイベントハンドラーに取り込む別の方法が見つからない場合は、次の方法で試すことができますApplication.OpenForms

// using System.Linq;
// using System.Windows.Forms; 

Form1 mainForm = Application.OpenForms.OfType<Form1>().SingleOrDefault();
于 2012-05-07T21:27:14.723 に答える
0

問題がタイマー内のForm1からメソッドにアクセスする方法であるが、それが別のクラスにある場合は、Form1の参照をタイマーを含むクラスに渡すことができます。クラススコープで変数を宣言します。

Form1 mainForm;

ここでインスタンス化しないことが重要です。次に、次のようなメソッドを作成します。

public void PassReference(Form1 form1)
{
   this.mainForm = form1;
}

これで、MainFormからPassReferenceを呼び出すと、Form1のすべてのパブリックメソッドにアクセスできるようになります。

于 2012-05-07T21:32:31.163 に答える
0

タイマーもMainFormにあるといいのですが。その場合、「this」を使用できます。

this-MainFormです

于 2012-05-09T02:36:43.650 に答える
0

イベントは静的として宣言されていますが、時間自体は静的ではありません。

静的イベントが必要な場合は、フォームへの静的参照も保持し、タイマーイベント内からその参照を使用します。

于 2012-05-09T02:40:36.457 に答える