windowsformsアプリで他のフォームにあるコントロールにアクセルするサンプルコード

以下は、Windows Forms アプリケーションで他のフォームにあるコントロールにアクセスするためのサンプルコードです。

まず、2つのフォームを作成し、双方に Button コントロールを配置します。(サンプルでは、form1にbutton1をform2にbutton2を配置)

// Form1.cs

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

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

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

    private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hello from Form2!");
    }
}

次に、Form1 から Form2 の Button コントロールにアクセスするための方法を示します。

// Form1.cs

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

    // Form2 の Button コントロールを取得する
    Button form2Button = form2.Controls["button2"] as Button;
    
    // Form2 の Button コントロールを使用する
    form2Button.PerformClick();
}

このコードでは、Form2 の Button コントロールを取得して、その PerformClick() メソッドを呼び出しています。これにより、Form2 の Button コントロールをクリックするのと同じ効果が得られます。