激活另一个表格

时间:2013-05-25 19:02:59

标签: c#

从Form1开始,我一直在打开Form2。如果我然后单击一个按钮或Form1中的任何内容,我希望激活Form2。像

这样的东西
Form2.Activate();

但这只是给我错误。

这是我现在的代码:

    private void button1_Click(object sender, EventArgs e) // first I click here
    {
        Form2 f2 = new Form2();
        f2.Show();
    }

    private void button2_Click(object sender, EventArgs e) // then here, to activate it
    {
        Form2 f2 = new Form2();
        f2.Activate();
    }

3 个答案:

答案 0 :(得分:2)

我认为你需要创建一个类的实例才能访问实例方法。基本上,实例是通过构造函数调用创建的,如下所示:

Form2 form = new Form2();

但是,显示新创建的表单的方法是这样的:

form2.Show();

答案 1 :(得分:2)

你有这个错误,因为应该从Form2类的实例调用Activate方法,而不是Form2类的自身,Activate()不是静态方法,你必须首先实例化Form2类,这个事件处理程序用于单击第一个表单上的按钮

private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
        } 

这是为了显示表单,要激活它并使其成为向您显示的主要表单,您可以将Activate()方法调用到该实例,例如

form2.Show();
form2.Activate();

答案 2 :(得分:1)

将Form2引用移出 Class 级别,以便可以从button1和button2访问它。

像...一样的东西。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Form2 f2 = null;

    private void button1_Click(object sender, EventArgs e) // first I click here
    {
        if (f2 == null || f2.IsDisposed)
        {
            f2 = new Form2();
            f2.Show();
        }
        else 
        {
            ActivateForm2();
        }
    }

    private void button2_Click(object sender, EventArgs e) // then here, to activate it
    {
        ActivateForm2();
    }

    private void ActivateForm2()
    {
        if (f2 != null && !f2.IsDisposed)
        {
            if (f2.WindowState == FormWindowState.Minimized)
            {
                f2.WindowState = FormWindowState.Normal;
            }
            f2.Activate();
        }
    }

}