从另一个表单编辑时 MenuStrip 不更新 (C#)

MenuStrip not updating when editing it from another form (C#)

在过去的 3-4 小时里,我遇到了一个一直困扰着我的问题。 基本上,我有一个主窗体,即 MDI 父窗体。我有另一种形式,即该父项的 MDI 子项。我使用第二种形式登录,登录后,我想向该主窗体的 menuStrip 添加新项目,但由于某种原因我不能。我尝试调试,发现 menuStrip 的索引针对新项目正确扩展,但它们没有在表单中更新。我尝试使用 this.Show 再次显示主窗体。这奏效了!我得到了一个新表单,显示了 menuStrip 中的新项目。但是,我只想更新它们而不是创建另一个表单。我尝试了 refreshing/updating,但没有任何效果。 :/ 有什么建议么?

谢谢!

编辑: 这里有更多信息:

这是第二种形式的代码

if (successLogin==DialogResult.OK || successLogin==DialogResult.Cancel)
                {
                    Form1 main = new Form1(); //define main form
                    FullUser = textBox1.Text; //getting the username (will use it for the menuStrip items "Logged in as: "+ FullUser)
                    main.LogedIn(FullUser);//calls method

                    this.Close(); //closing the 2nd form

                }

在主窗体中调用 public 方法

    public void LogedIn(string user)
    {
        menuStrip1.Items.Add("Item here"); //adding the item to the menuStrip
    }

编辑 2:我放置了一个计时器,它在打开第二个表单时启动并检查 public 布尔值。这让它工作了,但仍然不是我想要的方式。

您正在创建一个类型为 Form1 的新表单:

Form1 main = new Form1();

并将项目添加到 那个 新表格,而不是您现有的表格。

如果表格是您在问题中陈述的第二种表格的 MDIParent,您可以将该行更改为:

Form1 main = (Form1)this.MDIParent;

如果不是,则您需要保留对现有表单的引用。如果您创建一个新的(就像您正在做的那样),那么这些项目将添加到那个新的,但不会添加到已经创建的那个。