当我从班上打电话给我的表格时,我得到StackOverflowException
。
在我的MainForm
我使用Youtube.cs
调用Youtube yt = new Youtube();
课程。然后在我的Youtube
课程中,我使用MainForm
调用MainForm main = new MainForm();
。我相信这是导致StackOverflow的原因,因为它似乎正在创建一个循环。
我需要从我的Youtube
类中MainForm
以及MainForm
访问Youtube
类,所以有没有办法解决这个问题而不会导致StackOverflow?
这是MainForm
的顶部:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
Youtube yt = new Youtube();
这是Youtube.cs
:
class Youtube
{
MainForm main = new MainForm();
答案 0 :(得分:7)
将表单对象传递给YouTube类,并使用YouTube类中的对象。
public class Youtube
{
MainForm m_MainForm = null;
public Youtube(MainForm frm)
{
m_MainForm = frm;
}
}
答案 1 :(得分:3)
是的,这导致StackOverFlowException
。
一种方法是通过构造函数将表单传递到Youtube
类。
示例:强>
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
}
答案 2 :(得分: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;
}
}