如何在表单之间导航

时间:2011-06-24 03:52:58

标签: c# .net winforms visual-studio visual-studio-2010

我是c#和窗口形式的新手 我正在做一个项目,我遇到了一些问题

  1. 我如何在窗口中导航表单(我有一个菜单条,点击它会显示一个项目“品牌”,所以当我点击它,它应该在窗口中打开,我不想要使用的东西mdiparent / container,我有form1和form2,然后我把菜单条放在form1中,form1里面有一些东西,如果使用mdiparent / container,则form1 content / thing会阻塞form2)
  2. 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();
        }
    }
    

3 个答案:

答案 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等。因此,您不必创建额外的表单即可在表单之间导航。