在过去的3-4个小时里,我一直有一个问题困扰着我。基本上,我有一个主窗体,那就是MDI父窗体。我有另一个窗体,它是该父级的MDI子级。我使用第二个表单进行登录,登录后,我想向主表单的menuStrip添加新项目,但由于某些原因,我无法添加。我试着调试,发现menuStrip的索引为新项目正确扩展,但它们没有在表单中更新。我试着用this.Show
再次显示主表单。成功了!我得到了一个新表单,显示菜单条中的新项目。但是,我只是想更新它们,而不是创建另一个表单。我尝试过刷新/更新,但没有成功。:/有什么建议吗?
谢谢!
编辑:以下是更多信息:
这是来自第二版的代码
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 void LogedIn(string user)
{
menuStrip1.Items.Add("Item here"); //adding the item to the menuStrip
}
编辑2:我放了一个计时器,它在打开第二个表单时启动,并检查公共布尔值。这使它发挥了作用,但仍然不是我想要的方式。
您正在以下行中创建Form1
类型的新表单:
Form1 main = new Form1();
并将项目添加到新表单中,而不是现有表单中。
如果如您在问题中所述,该表单是第二个表单的MDIParent
,您可以将该行更改为:
Form1 main = (Form1)this.MDIParent;
如果不是,那么你需要保留对现有表单的引用。如果你创建了一个新表单(就像你正在做的那样),那么项目会添加到新表单中,但不会添加到已经创建的表单中。