c# - 使用此代码时```Form1 form = new Form1();``` 出现问题
问题描述
我正在尝试使用代码form.mainPnl.Controls.Add(background);
,其中 mainPnl 是我添加到 Form1 的面板,我只是用作基础,并且在调试期间正在创建背景。
var background = new Panel
{
Name = "background",
Dock = DockStyle.Fill,
BackColor = Color.Black,
};
我在一个副类中工作(不知道它叫什么。它只是不是基类)这意味着我不能使用 mainPnl 面板中的任何东西而不从 Form1 获取它,所以我需要使用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();
}
当您实例化您的表单时,它会创建一个菜单,该菜单会实例化一个新表单,该表单会创建一个新菜单,依此类推,直到您用完相互递归构造函数的堆栈空间。
除了为什么会出现堆栈溢出之外,我不确定您到底要做什么,或者您的问题是什么,所以就这样吧!
推荐阅读
- java - 如何在 selenium java 中单击此行?
- r - 从 r 中的列名中删除特定字符
- r - unclass(x) 中的 R Shiny 错误:无法使用 dplyr 过滤器函数取消对环境的分类
- python-3.x - Exec():限制访问
- apache-spark-sql - mapWithState 中的 stateSnapshots 按需
- vba - 循环+匹配
- java - BigDecimal.value of Usage
- ios - React Native Intercom - 不变违规
- azure - Azure Key Vault 参数参考限制
- amazon-web-services - 使用两个表进行 Redshift 表更新