如何使用C#从另一个表单中按下按钮?

use*_*950 3 c# forms button

我有2种形式:

  1. 制作屏幕截图的Form1。
  2. Form2具有2个按钮来操作由form1创建的屏幕截图。

Form1还具有一个“隐藏”按钮,其中包含保存屏幕截图的方法。

我的问题:

我如何从form2单击form1的按钮?以及如何检查是否关闭了form1,然后又关闭了form2?

我已经尝试过类似的操作,但是当我单击form2保存按钮时什么也没有发生:

var form = Form.ActiveForm as Form1;
if (form != null)
{
    form.button1.PerformClick();
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*all 5

首先,正常情况下,多个表单将工作,当您关闭启动表单时,辅助表单也将关闭。如果您要Form2在中创建,请Form1使用来显示(your second Forms Instance).Show(this)。然后,您可以通过Form2的Parent属性访问Form。即

      var form = (Form1)this.Owner();
Run Code Online (Sandbox Code Playgroud)

然后,您应该能够访问的所有公共方法Form1,而且我也会将您用于保存屏幕截图的代码放入公共方法中,而无需将其包含在Button的click事件中,尤其是在按钮为隐。

这是一个简单的示例:

表格1

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

    }

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

}
Run Code Online (Sandbox Code Playgroud)

表格2

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

    private void button1_Click(object sender, EventArgs e)
    {
        var frm = (Form1)this.Owner;
        if (frm != null)
            frm.button1.PerformClick();
    }
}
Run Code Online (Sandbox Code Playgroud)