在编写时对同一个MenuStrip我们往往需要使用多次,但每次都重新写又太过于复杂。为了省事,我们可以使用传参的方式。就是,在新的Form的构造函数中传进
如:
private MenuStrip Form2Main;
public Form2(MenuStrip msMain)
{
InitializeComponent();
this.Form2Main = msMain;
this.Form2Main.Parent = this;//将Form2设置为Form2Main的父窗体
this.Form2Main.Show();
}
此时再在开始构建Form2的地方调用
如:
private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this.menuStrip1);
f2.Show();
this.Hide();
}
但这时又有问题了,就是除了最初构建MenuStrip的窗体可以隐藏当前窗体外,别的窗体Hide() 都无效了。因为this代表的只是MenuStrip开始创建时的窗体自然是没用的。我们应当找到现在它所在的窗体。
this.menuStrip1.FindForm();
改进后的代码如下:
private void 登录ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.menuStrip1.FindForm().Hide();
Form2 f2 = new Form2(this.menuStrip1,0);
f2.Show();
}