0

从 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();
    }
4

3 回答 3

3

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

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

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

form2.Show();
form2.Activate();
于 2013-05-25T19:16:56.253 回答
2

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

Form2 form = new Form2();

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

form2.Show();
于 2013-05-25T19:07:13.403 回答
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();
        }
    }

}
于 2013-05-25T20:47:28.353 回答