我是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();
}
}
答案 0 :(得分:20)
你不能只关闭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();
}
答案 1 :(得分:3)
我认为您应该创建用户控件而不是不同的表单。然后,您可以根据菜单中的选择在主面板中添加用户控件。
最初类似下面的内容
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是另一种选择。
答案 2 :(得分:0)
问这个问题已经7年了,但是如果有人仍在寻找解决方案,我想给出一个答案。如果使用的是DevExpress,则可以将导航框架添加到程序中。您可以在不同的组件之间进行切换,例如GridControl,GroupBox等。因此,您不必创建额外的表单即可在表单之间导航。