C# 从另一个类访问变量inForm1

C# 从另一个类访问变量inForm1,c#,class,variables,C#,Class,Variables,我已经找了一段时间了,真的找不到解决我问题的好办法 我有一门课(我们称之为TaskbarNotifier)和我的表格1 在TaskbarNotifier中,我得到了以下信息: private Form1 form = new Form1(); this.form.NotifiersCount = this.form.NotifiersCount - 1; switch (notifier) { case 0:

我已经找了一段时间了,真的找不到解决我问题的好办法

我有一门课(我们称之为TaskbarNotifier)和我的表格1

在TaskbarNotifier中,我得到了以下信息:

private Form1 form = new Form1();
this.form.NotifiersCount = this.form.NotifiersCount - 1;
            switch (notifier)
            {
                case 0:
                    this.form.NewsShown = false;
                    break;
                case 1:
                    this.form.ThreadsSown = false;
                    break;
            }
    private ContextMenuStrip contextMenu = new ContextMenuStrip();
    private ToolStripMenuItem mnuItemExit = new ToolStripMenuItem();
    private ToolStripMenuItem mnuItemShow = new ToolStripMenuItem();
后来在那节课上我得到了这个:

private Form1 form = new Form1();
this.form.NotifiersCount = this.form.NotifiersCount - 1;
            switch (notifier)
            {
                case 0:
                    this.form.NewsShown = false;
                    break;
                case 1:
                    this.form.ThreadsSown = false;
                    break;
            }
    private ContextMenuStrip contextMenu = new ContextMenuStrip();
    private ToolStripMenuItem mnuItemExit = new ToolStripMenuItem();
    private ToolStripMenuItem mnuItemShow = new ToolStripMenuItem();
现在我的问题是,当我执行此操作时,会在以下位置出现StackOverflow错误:

private Form1 form = new Form1();
是否有其他更好的方法从另一个类访问Form1中的变量

非常感谢阅读:)

----编辑---

好的,在表单1中,我得到了这个:

private Form1 form = new Form1();
this.form.NotifiersCount = this.form.NotifiersCount - 1;
            switch (notifier)
            {
                case 0:
                    this.form.NewsShown = false;
                    break;
                case 1:
                    this.form.ThreadsSown = false;
                    break;
            }
    private ContextMenuStrip contextMenu = new ContextMenuStrip();
    private ToolStripMenuItem mnuItemExit = new ToolStripMenuItem();
    private ToolStripMenuItem mnuItemShow = new ToolStripMenuItem();
这就是stackoverflow实际开始的地方。 但通过删除:

private Form1 form = new Form1();

TaskbarNotifier它不会抛出任何错误。

显然,您正在
表单1
的构造过程中的某个地方创建一个
TaskbarNotifier

如果:

  • 您在构造函数中显式编写了
    var test=new taskbanotifier()
  • 您已将该类型的控件拖放到设计器中
  • 在任何一种情况下,
    Form1
    都将构造一个
    taskbanotifier
    ,然后构造一个
    Form1
    ,并且,这种情况会发生很多次,并且会导致堆栈溢出


    确保
    TaskbarNotifier
    不是作为
    Form1
    创建的一部分创建的,错误将消失。

    Form1的构造函数中发生了什么?你确定这就是堆栈溢出异常的原因吗?实际上。。不这不是stackoverflow发生的地方,我忘了我已经注释了一些东西来发现问题。。stackoverflow从Form1开始,我将快速更新我的问题:)您在哪里创建
    TaskbarNotifier
    ?毫无疑问,在
    Form1
    的构造函数中的某个地方?@BradleyDotNET好吧,现在我只是觉得自己很愚蠢,xD我在表单完成之前创建了TaskbarNotifier-“,”更重要的是,如果Form1在构建过程中创建了
    TaskbarNotifier
    ,那么这里会有一个无限递归循环。我会把这些评论变成一个答案。