C# 从类调用窗体时发生堆栈溢出
当我从我的类调用我的表单时,我得到一个C# 从类调用窗体时发生堆栈溢出,c#,winforms,stack-overflow,C#,Winforms,Stack Overflow,当我从我的类调用我的表单时,我得到一个StackOverflowException 在我的MainForm中,我使用这个调用Youtube.cs类,Youtube yt=newyoutube()。然后在我的Youtube类中,我使用,mainformmain=newmainform()调用MainForm。我相信这就是导致StackOverflow的原因,因为它似乎在创建一个循环 我需要从MainForm访问Youtube类,也需要从我的Youtube类访问MainForm,那么有没有办法避免堆
StackOverflowException
在我的MainForm
中,我使用这个调用Youtube.cs
类,Youtube yt=newyoutube()代码>。然后在我的Youtube
类中,我使用,mainformmain=newmainform()调用MainForm
代码>。我相信这就是导致StackOverflow的原因,因为它似乎在创建一个循环
我需要从MainForm
访问Youtube
类,也需要从我的Youtube
类访问MainForm
,那么有没有办法避免堆栈溢出
这是从main表单顶部开始的:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
Youtube yt = new Youtube();
这是Youtube.cs的顶部:
class Youtube
{
MainForm main = new MainForm();
将表单对象传递给YouTube类,并在YouTube类中使用该对象
public class Youtube
{
MainForm m_MainForm = null;
public Youtube(MainForm frm)
{
m_MainForm = frm;
}
}
是的,这导致了StackOverFlowException
一种方法是通过构造函数将表单传递到Youtube
类中
示例:
在main窗体中
类:
Youtube yt = new Youtube(this)
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
yt = new Youtube(this);
}
Youtube yt = null;
public Youtube(MainForm mainform)
{
// do something with mainform
}
在Youtube
类中:
Youtube yt = new Youtube(this)
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
yt = new Youtube(this);
}
Youtube yt = null;
public Youtube(MainForm mainform)
{
// do something with mainform
}
您需要将MainForm
作为参数传递给YouTube
类
public class MainForm
{
private Youtube youtube;
public MainForm()
{
youtube = new Youtube(this);
}
}
然后在YoutubeYoutube
类中存储此引用:
public class Youtube
{
private MainForm form;
public Youtube(MainForm form)
{
this.form = form;
}
}
你能展示一些代码吗?我们需要了解每个类如何“访问”另一个类