使用此代码时,"Form1 form = new Form1();""出现问题



我正在尝试使用代码form.mainPnl.Controls.Add(background);其中mainPnl是我添加到Form1的一个面板,我只是将其用作基础,并且在调试期间正在创建背景。

var background = new Panel
{
Name = "background",
Dock = DockStyle.Fill,
BackColor = Color.Black,
};

我在副类工作(不知道它叫什么。它只是不是基类(,这意味着如果不从 Form1 获取它,我就无法使用 mainPnl 面板中的任何内容,所以我需要使用Form1 form = new Form1();但每当我使用它时,我认为它都会循环并崩溃程序。

主类:

public partial class Form1 : Form
{
public Panel mainPnl
{
get
{
return mainPanel;
}
}
public TextBox textbox
{
get
{
return hey;
}
}
Menu menu = new Menu();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
menu.Main();
}
private void Update_Tick(object sender, EventArgs e)
{
}
}

副类:

class Menu
{
Form1 form = new Form1();
public void Main()
{
createObjects();
}
public void createObjects()
{
var background = new Panel
{
Name = "background",
Dock = DockStyle.Fill,
BackColor = Color.Black,
};
form.mainPnl.Controls.Add(background);
}
}

这是唯一的代码。但是当我运行代码时,它显示一个错误并突出显示该代码并说"抛出'System.StackOverflowException'类型的异常">

在您的表格中,您有:

public partial class Form1 : Form
{
Menu menu = new Menu();
}

在你的Menu课上,你有:

class Menu
{
Form1 form = new Form1();
}

当您实例化表单时,它会创建一个菜单,该菜单实例化一个新表单,该表单创建一个新菜单,依此类推,直到您用完相互递归构造函数的堆栈空间。

我不确定你到底想做什么,或者你的问题是什么,除了为什么你会得到堆栈溢出,所以你来了!

递归!StackoverflowExeption通常是因为递归而发生的(根据我的经验(

public partial class Form1 : Form
{
Menu menu = new Menu(); // Creates new Menu
}
class Menu
{
Form1 form = new Form1(); // Creates new Form1
}

相关内容

最新更新