C# 使用此代码时,``Form1 form=new Form1();``出了点问题

C# 使用此代码时,``Form1 form=new Form1();``出了点问题,c#,.net,winforms,C#,.net,Winforms,我试图使用代码form.mainpl.Controls.Addbackground;其中mainPnl是我添加到Form1中的一个面板,我只使用它作为基础,而后台是在调试期间创建的 var background = new Panel { Name = "background", Dock = DockStyle.Fill, BackColor = Color.Black, }; 我在补习班工作,不知道它叫什么。它不是基类,这意味着如果不从Form1获得它,我就不能使用mainPnl面板中的任

我试图使用代码form.mainpl.Controls.Addbackground;其中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();
}
class Menu
{
    Form1 form = new Form1();
}
在菜单类中,您有:

public partial class Form1 : Form
{
    Menu menu = new Menu();
}
class Menu
{
    Form1 form = new Form1();
}
当您实例化表单时,它会创建一个菜单,该菜单实例化一个新表单,该表单创建一个新菜单,依此类推,直到您耗尽了相互递归构造函数的堆栈空间


我不知道你到底想做什么,或者你的问题是什么,除了为什么你会得到堆栈溢出,所以给你

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

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

张贴的代码没有问题。张贴导致问题的代码。程序中是否有for或while循环?使用Form1 form=new Form1时;它说在运行时抛出“类型异常”System.StackOverflowException时出现此错误。构造函数中是否有代码?还是在加载事件中?展示给我看,不。我使用一个空来创建面板,然后只在加载表单时调用该空。就这些,但我该怎么处理呢。我需要从main和vise Versas内部的Form1中访问内容,所以访问它们,为什么要创建新表单?如果不使用菜单菜单=新建菜单,我无法使用main中的空格/变量;如果不使用form1 form=new form1,我不能使用form1中的任何面板/图片框;提问和回答。请将此标记为已回答,然后打开一个新问题。@OneWetBoy,这些绝对错误的先入之见是从哪里来的?当然,您可以使用句柄访问内存中的对象。你到底不知道怎么做,把句柄作为参数传递?在类中存储字段?呼叫=?忘了你写的所有代码吧,空间是错误的,你到底有什么问题?不是您编写的代码的问题,而是您的实际问题。