簡體   English   中英

類型為'System.StackOverflowException'的C#未處理異常

[英]C# unhandled exception of type 'System.StackOverflowException

希望我能解釋這個確定。 我有一個倒數計時器-用戶輸入時間等,然后從單選按鈕中選擇是否要打開最小尺寸或最大尺寸。 根據選擇的方式,它將加載“最小”或“最大”形式,在“用戶控制”形式中輸入的時間值將被傳遞並開始倒計時。 現在,在“用戶控制”表單上有暫停/停止,重置等按鈕。 我希望這些以最小/最大形式出現。 我希望對我來說最簡單的方法是隱藏用戶控件表單上的按鈕,然后嘗試將其連接到最小/最大表單上的按鈕,以便如果按下它們,則就像用戶控件上的按鈕一樣按下。 但是我遇到標​​題錯誤-它以黃色突出顯示下面的語句(將執行的下一條語句)。

(注意-這行代碼是Min形式的-我需要聲明它的新實例,以便我可以調用函數PauseMinClick(MinForm上的Pause按鈕)_我希望它調用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表單上一樣(它們都可以正常工作)按下時,將其連接起來。

非常感謝-科利

聽起來您像這樣:

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

    // Other stuff...
}

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

    // Other stuff...
}

換句話說,要創建Min的實例,您需要創建CountdownUserControl ...的實例,而該實例又需要創建Min ...的實例...而后者又需要創建CountdownUserControl的實例...您看看你為什么有問題?

對我來說,您要實現的目標還不是很清楚,但這就是問題的原因。 也許其中一個類應在其構造函數中采用一個參數,以允許其引用另一個實例?

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

 private CountdownUserControl CU = new CountdownUserControl(); 

它創建一個新的CountdownUserControl,它創建一個CountdownUserControl,它在堆棧溢出之前.....等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM