如下圖所示使用者如果想將子視窗Textbox所接收到的資料,在父視窗TextBox上顯示該怎麼去執行呢?這時候就需要使用委派 delegate的手法才可以實現,因此本篇文章小編要分享 C#委派delegate教學 。
程式範例如下:
Form1 程式碼如下:
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 FormCtrl
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/* 將委派綁定寫在form2建構之後 */
Form2 form2 = new Form2();
form2.CallReceive += new Form2.EventReceive(seetText);
form2.Show();
}
/* 需讓其它class執行的方法 ex:傳入form2的textbox的值寫入Form1的textbox */
public void seetText(string tmp)
{
textBox_setvalue.Text = tmp;
}
}
}
Form2 程式碼如下:
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 FormCtrl
{
public partial class Form2 : Form
{
/* 宣告事件建立名為 EventReceive 的委派 讓Form2 可以使用 Form1的方法*/
public delegate void EventReceive(string tmp);
/* 把這委派產生成物件 */
public EventReceive CallReceive;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (CallReceive != null)
{
CallReceive(textBox_getValue.Text);
}
}
}
}
延伸閱讀: