我是一个新兴的c#和窗口形式我正在做一个项目,我遇到了一些问题
2.i使用下面的代码,问题是我想关闭form1,我点击菜单条中的“品牌”...但如何???
public partial class Form1 : Form
{
// i put the menu strip in form1 design
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Check_Click(object sender, EventArgs e)
{
Form2 Check = new Form2();
Check.Show();
}
}
你不能只关闭Form1
,因为它是主要形式,但你可以隐藏它。使用this.Hide()
。
private void Check_Click(object sender, EventArgs e)
{
Form2 Check= new Form2();
Check.Show();
Hide();
}
[编辑]
不确定这是不是问。但...
有许多方法可以在表单之间实现导航,例如:
在Form1
:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Tag = this;
form2.Show(this);
Hide();
}
在Form2
:
private void button1_Click(object sender, EventArgs e)
{
var form1 = (Form1)Tag;
form1.Show();
Close();
}
我认为你应该创建用户控件而不是不同的形式。然后,您可以根据菜单中的选择在主面板中添加用户控件。
最初类似于下面的内容
this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form1());
用户点击菜单中的其他选项后。
this.panel.Controls.Clear();
this.panel.Controls.Add(new UserControl_For_Form2());
如果你真的想要使用你目前使用的方式。下面的代码将有所帮助
为Form2添加Form1属性,并使用其构造函数将form1实例解析为Form2。
public partial class Form2 : Form
{
private Form1 form1;
public Form2(Form1 myForm)
{
InitializeComponent();
form1 = myForm;
}
}
显示form2并隐藏form1。
private void Check_Click(object sender, EventArgs e)
{
Form2 Check= new Form2(this);
Check.Show();
Hide();
}
现在,在form2结束事件中,您可以显示form2中的form1实例并关闭form2。
使用MDI form是另一种选择。
问这个问题已经有7年了,但是如果有人还在寻找解决方案,我想给出答案。如果您使用的是DevExpress,则可以将导航框架添加到您的程序中。您可以在不同的组件之间切换,例如GridControl,GroupBox等。所以你不必创建一个额外的表单来在表单之间导航。