Windows Formアプリケーションで、コントロールのClickイベントをプログラムコードから発生させる方法を紹介します。
下図のUIを作成します。
button2のEnabledプロパティは"False"に設定します。
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SimulateClickEvent
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text += "button1 - click\r\n";
}
private void checkBox1_Click(object sender, EventArgs e)
{
textBox1.Text += "checkBox1 - click\r\n";
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text += "button2 - click\r\n";
}
private void radioButton1_Click(object sender, EventArgs e)
{
textBox1.Text += "radioButton1 - click\r\n";
}
private void radioButton2_Click(object sender, EventArgs e)
{
textBox1.Text += "radioButton2 - click\r\n";
}
private void button3_Click(object sender, EventArgs e)
{
button1.PerformClick();
}
private void button4_Click(object sender, EventArgs e)
{
button2.PerformClick();
}
private void button5_Click(object sender, EventArgs e)
{
radioButton1.PerformClick();
}
private void button6_Click(object sender, EventArgs e)
{
radioButton2.PerformClick();
}
}
}
PerformClick()メソッドを呼び出すことで、コードからコントロールをクリックしたときと同じ動作をさせることができます。クリックの動作と同じ動きをするため、EnabledプロパティやVisubleプロパティが"False"の場合、PerformClickメソッドを呼び出しても何も実行されません。
button1,button2,radioButton1,radioButton2のClickイベントには、textBox1へのメッセージを表示するコードを実装します。button3にはbutton1のPerformClickメソッドの呼び出しを、button4にはbutton2のPerformClick、button5にはらradioButton1のPerformClick、button6にはradioButton2のPerformClickメソッドの呼び出しを記述します。
プロジェクトを実行します。下図のウィンドウが表示されます。
button3をクリックします。PerformClickメソッドの呼び出しにより、button1をクリックしたときと同じ動作が実行され、テキストボックスにbutton1がクリックされた旨のメッセージが表示されます。
button4をクリックします。button2のPerformClickメソッドが呼び出されますが、button2のEnabledプロパティが"False"のため、何も実行されません。
button5をクリックします。radioButton1のPerformClickメソッドが呼び出され、radioButton1がクリックされた時と同じ動作をします。
button6も同様です。