如何在表单之间导航

问题描述 投票:9回答:3

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

  1. 如何在窗口中导航表单(我有一个菜单条,点击它会显示一个项目“品牌”,所以当我点击它,它应该在窗口中打开,我不想要使用mdiparent /容器,我有form1和form2,然后我把菜单条放在form1中,form1中有一些东西,如果使用mdiparent / container,form1 content / thing会阻塞form2)

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();
    }
}
c# .net winforms visual-studio visual-studio-2010
3个回答
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();
}

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是另一种选择。


0
投票

问这个问题已经有7年了,但是如果有人还在寻找解决方案,我想给出答案。如果您使用的是DevExpress,则可以将导航框架添加到您的程序中。您可以在不同的组件之间切换,例如GridControl,GroupBox等。所以你不必创建一个额外的表单来在表单之间导航。

© www.soinside.com 2019 - 2024. All rights reserved.