2011-12-24 36 views
2

在我的項目主窗體中,我建立了一個計時器,它調用不同類的對象來設置它的時間間隔。如何訪問2個類之間的1個定時器?

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

時間間隔是我的設置類中的設置。當用戶從組合框中選擇一個新時間時,我希望它重新啓動在我的主窗體/類中建立的時鐘,並使用新選擇的時間。我如何從我的主類訪問已建立的「Clock」對象?

首先,我想我可以使時鐘成爲自己的類,並從主類和設置類實例化該類的對象,但是我認爲這給我帶來了兩個不是我想要的定時器活動。我可以將Clock類從主類傳遞給設置類嗎?這裏最好的路線是什麼?

編輯: 我的主要形式創建定時器

Timer Clock = new Timer(); 

然後我建立的時間每個定時器週期是應該的,同時開始計時。

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

我的第二種形式被引用爲「formSettings」。這種形式包括含有不同的時間選擇,例如1分鐘15分鐘等。當程序啓動時它執行以下啓動組合框:

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

所以在程序啓動,並期待在設置形式,返回什麼時間被選中,並啓動計時器。我想要做的是,如果用戶選擇不同的時間,我希望程序再次調用「MakeTheClockTimer()」。如果時間選擇已更改,我需要它重新啓動計時器。因此,像:

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

這將使它所以當組合框被改變,它會重新建立定時器設置,並重新開始基於這些設置定時器。

+0

我不是100%清楚你正在做什麼,但考慮使用單身時鐘對象,所以你總是隻有一個。隨時發佈更多的代碼,以澄清你的意圖 – 2011-12-24 02:36:43

回答

0

我可以將Clock對象從主類傳遞給設置 類嗎?

是的,但您不會傳遞該對象,您將傳遞對該對象的引用。

+0

會傳遞一個對象的引用做我在這裏試圖完成? – 2011-12-24 03:22:20

+0

是的,你會有一個對象(計時器)和其他兩個對象訪問它。 – 2011-12-24 03:28:38