ผมเคยไปหาๆอ่านเรื่อง delegate ของคนอื่นที่เขียนไว้ แต่ก็ยาวซ่ะเหลือเกิน หรือเวลายกตัวเองก็เขียนซ่ะแบบ Advance เกิน ยากแก่การเข้าใจสำหรับ Progamon เป็ดน้อยอย่างผม
ดูจาก เว็บ microsoft ก็ประมาณว่า delegate สามารถเรียก Method อื่นได้ แต่ถึงอย่างนั้นก็ต้อง new Object อยู่ดี (อันนี้เดาเอง เห่อะๆ)
เข้าเรื่องเลย ***
จริงๆผมก็ไม่ค่อยเข้าใจเรื่อง delegate สักเท่าไหร่ แต่พอเขียนออกมาได้ ยังไงก็ศึกษาพอเป็นแนวทางแล้วกันเน๊าะ
หลักการที่ผมนำเอา delegate มาใช้ก็คงหนีไม่พ้นเรื่องส่งตัวแปรระหว่างฟอร์ม เช่น การทำ popHelp ต่างๆ
ส่วนหน้าตาก็ประมาณนี้

มาดูโค้ดกันเลยแล้วกัน
//Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public delegate void SendControl(TextBox text); //ประกาศ Delegate ใช้สำหรับส่งไปฟอร์ม 2
private void cmdSend_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
//ส่ง
SendControl del = new SendControl(form2.funData);
del(this.txtName);
//รับ กลับมา
form2.passControl = new Form2.PassControl(PassData);
form2.Show();
}
private void PassData(object sender) // method รับค่ากลับ
{
this.label1.Text = ((TextBox)sender).Text;
}
}
//Form2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
// Define delegate
public delegate void PassControl(object sender); //ประกาศ Delegate ใช้สำหรับส่งไปฟอร์ม 1 ส่งค่ากลับ
public PassControl passControl; //
private void cmdSend_Click(object sender, EventArgs e)
{
if (passControl != null)
{
passControl(txtName);
}
// this.Hide();
}
internal void funData(TextBox text) // method สำหรับรับค่ามา
{
this.label1.Text = text.Text;
}
}
คงพอเข้าใจอยู่หรอกเน๊าะ แต่จริงๆ เวลาค่าไป ใช้ Constructor ก็ได้น่ะ แล้วแต่ใครจะไปประยุกต์ใช้เลย
ผิดพลาดประการใด ก็ขออภัยไว้น่ะที่นี่ด้วย ผมก็ไม่ค่อยเข้าใจมัน หรือว่ามันไม่เข้าใจผมก็ไม่รู้น่ะฮ่ะ.. ^-^
ไม่มีความคิดเห็น:
แสดงความคิดเห็น