2

StackOverflowException当我从班上打电话给我的表格时,我得到了一个。

在我MainFormYoutube.cs课堂上,我使用这个,Youtube yt = new Youtube();. 然后在我的Youtube课堂上,我称之为MainFormusing, MainForm main = new MainForm();。我相信这就是导致 StackOverflow 的原因,因为它似乎正在创建一个循环。

我需要从我的班级和班级访问Youtube班级,所以有什么办法可以解决这个问题而不会导致 StackOverflow?MainFormMainFormYoutube

这是从顶部开始的MainForm

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }

    Youtube yt = new Youtube();

这是从顶部开始的Youtube.cs

class Youtube
{
    MainForm main = new MainForm();
4

3 回答 3

7

将表单对象传递给 YouTube 类,并在 YouTube 类中使用该对象。

public class Youtube
{
     MainForm m_MainForm = null;
     public Youtube(MainForm frm)
     {
            m_MainForm = frm;
     }

}  
于 2012-08-03T14:08:50.487 回答
3

是的,这是导致StackOverFlowException.

一种方法是Youtube通过构造函数将 Form 传递给您的类。


例子:

MainForm课堂上:

Youtube yt = new Youtube(this)

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        yt = new Youtube(this);
    }

    Youtube yt = null;

Youtube课堂上:

public Youtube(MainForm mainform)
{
    // do something with mainform
}
于 2012-08-03T14:09:27.477 回答
3

您需要将您的类作为参数传递MainForm给您的类。YouTube

public class MainForm
{
   private Youtube youtube;
   public MainForm()
   {
       youtube = new Youtube(this);
   }
}

然后在你的Youtube类中存储这个引用:

public class Youtube
{
   private MainForm form;

   public Youtube(MainForm form)
   {
       this.form = form;
   }
}
于 2012-08-03T14:10:06.710 回答