从另一个类访问变量inForm1

时间:2014-11-26 17:32:33

标签: c# class variables

我一直在寻找一段时间,并且无法找到解决问题的好方法。

我上了一堂课(让我们称之为 TaskbarNotifier )和我的 Form1

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;
            }

现在我的问题是,当我这样做时,我得到一个StackOverflow错误:

private Form1 form = new Form1();

我还有另一种更好的方法从另一个类访问Form1中的变量吗?

非常感谢您阅读:)

---- ---- EDIT

好的,所以在 Form1 构造函数中,我得到了这个:

    private ContextMenuStrip contextMenu = new ContextMenuStrip();
    private ToolStripMenuItem mnuItemExit = new ToolStripMenuItem();
    private ToolStripMenuItem mnuItemShow = new ToolStripMenuItem();

stackoverflow实际启动的位置。 但是删除:

private Form1 form = new Form1();

来自任务栏通知器,它不会抛出任何错误。

1 个答案:

答案 0 :(得分:1)

显然,您正在TaskbarNotifier的构建过程中的某处创建Form1

如果出现这种情况:

  1. 您在构造函数
  2. 中明确写了var test = new TaskbarNotifier()
  3. 您将该类型的控件放到了设计器上
  4. 在任何一种情况下,Form1都会构造一个TaskbarNotifier然后构造一个Form1,好吧,这种情况发生了很多次,你得到一个堆栈溢出。

    确保确定 TaskbarNotifier未在Form1创建时创建,错误将消失。