2011-08-09 70 views
1

希望我可以解釋這一點。我有一個倒數計時器 - 用戶輸入時間等,並選擇他們是否想從單選按鈕打開最小尺寸或最大尺寸。根據他們選擇哪一個,它將加載最小形式或最大形式,其中輸入到UserControl表單中的值將被傳遞並開始倒計時。現在在用戶控制表單上有用於暫停/停止,重置等的按鈕。我希望這些是在最小/最大的形式。我希望對我來說最簡單的方法是隱藏用戶控件窗體上的按鈕,然後嘗試將它連接到最小/最大窗體上的按鈕,這樣如果按下按鈕,它就像用戶控件上的按鈕一樣按下。不過我正在錯誤的標題 - 它突出以下聲明爲黃色(將要執行的下一條語句)....C#未處理的類型爲'System.StackOverflowException的異常

(注 - 這行代碼是在閩形式 - 我需要聲明它的新實例,所以我可以調用函數PauseMinClick(MinForm上的暫停按鈕)_我想要它調用CountdownUserControl中的btnPauseClick函數)。

private CountdownUserControl CU = new CountdownUserControl(); 

    private void PauseMin_Click(object sender, EventArgs e) 
    { 
     CU.btnPause_Click(sender, e); 
    } 

,並強調在下面綠色一(下一條語句執行時從當前函數這個線程返回)...

private Min _Min = new Min(); 

(這是我的CountdownUserControl類 - 請注意,我需要一個實例在這裏傳遞的值必須倒計時,有誰知道我應該怎麼做才能很容易地解決這個問題?理想情況下,我不想重寫很多代碼 - 我只想讓它與新窗體上的按鈕最大值/最小值,但連接起來就好像它們在UserControl窗體上被按下一樣(它們都工作正常)。

非常感謝 - Colly

回答

4

這聽起來像你有這樣的:

class CountdownUserControl 
{ 
    private Min _Min = new Min(); 

    // Other stuff... 
} 

class Min 
{ 
    private CountdownUserControl CU = new CountdownUserControl(); 

    // Other stuff... 
} 

換句話說,創造Min一個實例,你需要創建的CountdownUserControl實例......這又需要創建一個Min的實例......這反過來需要創建一個實例CountdownUserControl ......你知道爲什麼你有問題嗎?

這不是真的我清楚你想達到什麼樣的,但是這是問題的原因。也許一個的類應該在其構造函數中使用一個參數來允許它引用另一個的實例?

+0

我在想,'CU.btnPause_Click'會實際上調用'PauseMin_Click' :-) – CodeNaked

+0

@John - 是的,這是我的場景類型 - 我現在看到它是如何造成問題的。我不能確定你的解決方案。我正在嘗試使用Min中CountdownuserControl中的一個函數。因此,在分鐘內,我想打電話給CU.btnPauseClick –

+0

@CollyMcK:你需要考慮應該創建其他類的實例。大概你想在'CountdownUserControl'的特定實例上調用'btnPauseClick',而不是任意的。 –

1

你說這是在你的CountdownUserControl類中?如果是這樣,這就是問題所在:

private CountdownUserControl CU = new CountdownUserControl(); 

它創建了一個新的CountdownUserControl,它創建了一個CountdownUserControl,這.....等等,直到堆棧溢出

+0

不,這是一個在閔盡我可以看到......問題在於兩個類都有一個字段指向另一個字段並創建一個新實例。看到我的答案。 –

+0

啊,是的,我誤解了它。 – yoozer8

相關問題