C#在两个窗体之间切换

时间:2016-01-09 14:31:02

标签: c# forms hide show

我有两种形式。首先,我有按钮将我转发到第二个表单并用this.Hide();

隐藏第一个表单

看起来像这样:

        Form1Streamer f1 = new Form1Streamer();
        f1.Left = this.Left;
        f1.Top = this.Top;
        f1.Size = this.Size;
        f1.Show();
        this.Hide();            
        checkBox1.Checked = false;

这也取决于它的位置,但它不是关于它的。 在第二种形式中,我有一个按钮,点击后返回到隐藏的表单并再次显示,但我找不到解决方法如何访问它的正确性。 我有一些想法,但不知道如何标记它。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您需要将第一个表单的引用传递给第二个表单,以便调用第一个表单的任何方法。这是一个简单的示例,将演示。

以下是我的第一个表单类

using System;
using System.Windows.Forms;

namespace Test_Desktop
{
    public partial class FirstForm : Form
    {
        public FirstForm()
        {
            InitializeComponent();
        }

        private void showSecondFormButton_Click(object sender, EventArgs e)
        {
            SecondForm secondform = new SecondForm(this); //Passing the reference of current form i.e. first form
            secondform.Show();
            this.Hide();       
        }
    }
}

这是我的第二个表格类

using System;
using System.Windows.Forms;

namespace Test_Desktop
{
    public partial class SecondForm : Form
    {
        private FirstForm firstForm = null;

        public SecondForm()
        {
            InitializeComponent();
        }

        ///
        /// Overriding constructor
        ///
        public SecondForm(FirstForm firstForm)
        {
            InitializeComponent();
            this.firstForm = firstForm;
        }

        private void showFirstFormButton_Click(object sender, EventArgs e)
        {
            if(firstForm!=null)
            {
                firstForm.Show();

                //
                //Do some processing
                //

                this.Dispose(); 
            }
        }
    }
}

答案 1 :(得分:0)

您需要在第二种形式中引用隐藏的表格。为此,更改第二个表单的构造函数,如下所示

public Form1Streamer(Form firstform)
{
   InitilizeComponent();
   this.firstForm=firstform;
}

private FirstForm firstForm;

现在,您可以使用参考firstForm

显示第一个表单

在第一种形式中,您需要更改此代码

Form1Streamer f1 = new Form1Streamer();

Form1Streamer f1 = new Form1Streamer(this);