C#未处理的类型'System.StackOverflowException异常

时间:2011-08-09 12:07:48

标签: c# .net winforms class

希望我能解释清楚。我有倒数计时器 - 用户输入时间等,如果他们想从单选按钮打开最小尺寸或最大尺寸,则选择。根据他们选择的内容,它将加载最小形式或最大形式,其中在UserControl表单中输入的时间将传递并开始倒计时。现在,用户控件表单上有暂停/停止,重置等按钮。我希望这些是最小/最大形式。我希望对我来说最简单的方法就是隐藏用户控件表单上的按钮,然后尝试将其连接到最小/最大形式的按钮,这样如果按下它就像预设用户控件上的按钮一样按下。但是我收到标题中的错误 - 它突出显示以下黄色语句(将执行的下一个语句)....

(注意 - 这行代码是Min形式 - 我需要声明它的一个新实例,所以我可以调用函数PauseMinClick(MinForm上的Pause按钮)_我希望它调用btnPauseClick函数在CountdownUserControl中。

    private CountdownUserControl CU = new CountdownUserControl();

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

并突出显示下面的绿色(当该线程从当前函数返回时执行的下一个语句)...

    private Min _Min = new Min();

(这是在我的CountdownUserControl类中 - 注意我需要它的一个实例来传递必须倒计时的值。有谁知道我应该做什么来轻松解决这个问题?理想情况下我不想重新 - 编写大量代码 - 我只想让它使用新表单Max / Min上的按钮,但是就像在UserControl表单上按下它们一样(它们都工作正常)。

非常感谢 - Colly

2 个答案:

答案 0 :(得分:4)

听起来你有这个:

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

    // Other stuff...
}

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

    // Other stuff...
}

换句话说,要创建Min的实例,您需要创建CountdownUserControl的实例...这又需要创建Min的实例...而这又需要创建CountdownUserControl的实例......你明白为什么会遇到问题吗?

我不太清楚你想要达到的目标,但这是问题的原因。也许一个类应该在其构造函数中使用一个参数来允许它引用另一个的实例?

答案 1 :(得分:1)

你说这是在你的CountdownUserControl类中吗?如果是这样,这就是问题所在:

 private CountdownUserControl CU = new CountdownUserControl(); 

它创建一个新的CountdownUserControl,它创建一个CountdownUserControl,等等......直到堆栈溢出