วันพุธที่ 8 เมษายน พ.ศ. 2558

C# Delegate การส่งค่าระหว่าง ฟอร์ม

ผมเคยไปหาๆอ่านเรื่อง 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 ก็ได้น่ะ แล้วแต่ใครจะไปประยุกต์ใช้เลย ผิดพลาดประการใด ก็ขออภัยไว้น่ะที่นี่ด้วย ผมก็ไม่ค่อยเข้าใจมัน หรือว่ามันไม่เข้าใจผมก็ไม่รู้น่ะฮ่ะ.. ^-^

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

การติดตั้ง SAP ABAP

ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง)  เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ...