form1とform2の2つのフォームがあります。2つのフォームが開いています。form2には、1つのテキストボックス(txt2)と1つのボタン(btn2)があります。form1には、1つのテキストボックス(txt1)があります。ユーザーがtxt2に何かを入力してbtn2をクリックすると、txt2のテキストがtxt1に追加されます。これはあなたが望むものですか?
はいの場合:form2で、デリゲートを作成する必要があります。
// Declare a delegate
public delegate void GetValue(string value);
// Declare event with delegate
public event GetValue btn2_Clicked;
次に、form2で、そのイベントを処理する関数を作成します。関数の名前は、宣言したイベントの名前と同じで、プレフィックス「On」を追加します。このような:
public void Onbtn2_Clicked(string value)
{
if (btn2_Clicked != null)
{
btn2_Clicked(value);
}
}
その後、btn2クリックイベントで、作成したばかりのイベントを発生させます。
private void btn2_Click(object sender, EventArgs e)
{
Onbtn2_Clicked(txt2.Text);
}
わかりました、それはform2で行われます。form1をカムバックして終了:ユーザーがform1のボタン(btn1)をクリックすると、form2が開くと想定しているため、btn1のクリックイベントでは次のようになります。
private void btn1_Click(object sender, EventArgs e)
{
// Create form2
Form2 frm2 = new Form2();
// Handle btn2 click
frm2.btn2_Clicked += new Form2.GetValue(frm2_btn2_Clicked);
// Show form2
frm2.Show();
}
void frm2_btn2_Clicked(string value)
{
// When btn2 is clicked, the text in txt2 will be assign to txt1
txt1.Text = value;
}
そして、テキストはform1のtxt1に割り当てられます