2011-12-24 1 views
2

私のプロジェクトのメインフォームで、インターバルを設定するために別のクラスのオブジェクトを呼び出すタイマーを設定します。2クラス間で1タイマーにアクセスするには?

Clock.Interval = formSettings.GetTimeInTicks(); 
    Clock.Tick += new EventHandler(TimerEventProcessor); 
    Clock.Start(); 

時間間隔は、自分のSettingsクラスの設定です。ユーザーがコンボボックスから新しい時刻を選択すると、メインフォーム/クラスに設定されている時計を再起動し、新しく選択した時刻を使用します。メインクラスから確立された「時計」オブジェクトにアクセスするにはどうすればよいですか?

最初に私は時計を独自のクラスにすることができ、メインクラスと設定クラスからそのクラスのオブジェクトをインスタンス化できたと思っていましたが、私は自分の望むものではない2つのタイマーをアクティブにしています。メインクラスのClockオブジェクトを設定クラスに渡すことはできますか?ここに行くには最適なルートは何ですか?

EDITは: 私のメインフォームは、その後、私は、各タイマの周期があるべき時間を確立し、タイマーをスタートタイマー

Timer Clock = new Timer(); 

に作成されます。

public void MakeTheClockTimer() 
{ 
Clock.Interval = formSettings.GetTimeInTicks(); 
Clock.Tick += new EventHandler(TimerEventProcessor); 
Clock.Start(); 
} 

私の2番目のフォームは "formSettings"と呼ばれます。

public Form1() 
    {    
     InitializeComponent(); 
     MakeTheClockTimer(); 
    } 

だから、プログラムが起動し、設定のフォームを見て、何を返します。この形式は、プログラムは、それが次の起動を実行開始するときなど、1分、15分など、異なる時間の選択を含むコンボボックスが含まれています時刻が選択され、タイマーが開始されます。私がしたいことは、ユーザーが別の時間を選択した場合、基本的に "MakeTheClockTimer()"を再度呼び出すことです。時間の選択が変更された場合は、タイマーを再起動する必要があります。だから、のようなもの:コンボボックスが変更されたとき、それはタイマーの設定を再確立し、それらの設定に基づいて、再びタイマーを開始するように

private void cbxTime_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     MainFormObject.MakeTheClockTimer(); 
    } 

は、これはそれを作るだろう。

+0

私はあなたがしていることについて100%明確ではありませんが、シングルトン時計オブジェクトを使用することを検討してください。あなたの意図を明確にするためのコードを投稿してください。 –

答えて

0

クロックオブジェクトをメインクラスから設定して クラスに渡すことはできますか?

はい、ただし、オブジェクトを渡すことはありません。オブジェクトへの参照を渡します。

+0

オブジェクトへの参照を渡すと、私がここで達成しようとしていることができますか? –

+0

はい、1つのオブジェクト(タイマー)とそれにアクセスする2つのオブジェクトがあります。 –

関連する問題