วันจันทร์ที่ 22 พฤศจิกายน พ.ศ. 2553

Event

จากบทความที่ผ่านมา เมื่อเพื่อนๆคลิกที่ปุ่ม มันควรมีอะไรเกิดขึ้นบ้าง สิ่งที่จะเกิดขึ้นเมื่อคลิกที่ปุ่มนี้เราเรียกว่า เหตุการณ์ (event) ครับ
- สร้างโปรเจกต์ใหม่เพิ่มเข้าไปยังโซลูชัน CsharpTutorialForFriends เหมือนเคย
- ตั้งชื่อมันว่า P14_Event
- เพิ่ม References ชื่อ System.Windows.Forms และ System.Drawing
- คัดลอกโค้ดจากโปรเจกต์ที่แล้ว P13_ButtonAndTextBox มาเพิ่มคำสั่งใหม่ (ในกรอบสีส้ม)
- โค้ดทั้งหมดแสดงได้ดังนี้

- ผลลัพธ์

ออบเจกต์มีเหตุการณ์เป็นของตัวเอง
นอกจากแต่ละออบเจกต์จะมีพรอเพอร์ตี้และเมธอดแล้ว มันยังมีเหตุการณ์เป็นของตัวเอง โดยแสดงเป็นรูปฟ้าผ่า

การกำหนดเหตุการณ์
เมื่อ . (dot) ตามหลังอินสแตนท์แล้ว Visual Studio จะแสดง pop up รายการคำสั่งที่สัมพันธ์กับออบเจกต์ที่ถูกอ้างอิง
- ให้เลือกที่เป็นรูปฟ้าผ่า ตัวอย่างนี้เลือกคำสั่ง Click โดยอาจพิมพ์เป็นคำสั่ง หรือพิมพ์บางส่วนแล้วกดปุ่ม enter เลยก็ได้
- จากนั้นให้พิมพ์ต่อด้วยเครื่องหมาย += แล้วกดปุ่ม Tab ครับ Visual Studio จะสร้างโค้ดให้ (ส่วนที่ขีดเส้นใต้สีเขียว) ดังรูป

- แดร็กเม้าส์รวบข้อความ buttonClick แล้วคัดลอก (copy) ไว้ก่อน

สร้างเหตุการณ์
- สร้างเหตุการณ์โดยนำหน้าด้วยคำสั่ง static (เพื่อให้ Main มองเห็น) ตามด้วยคำสั่ง void (ระบุว่าไม่ส่งค่ากลับ)
- แล้ววาง (paste) ข้อความ buttonClick ที่คัดลอกไว้ต่อไปดังรูป
***โปรดสังเกต เหตุการณ์นี้มีชื่อว่า buttonClick หากเราต้องการเปลี่ยนเป็นชื่ออื่น จะต้องเปลี่ยนสองตำแหน่งด้วยกันคือ
     - หลังคำสั่ง EventHandler ในส่วนกำหนดเหตุการณ์ บรรทัดที่ 29
     - และ บรรทัดที่ 37 ในส่วนสร้างเหตุการณ์

- เราทราบว่าเหตุการณ์จะเกิดขึ้นต่อเมื่อผู้ใช้กระทำบางอย่างกับโปรแกรม กรณีนี้คือ คลิก ที่ปุ่ม
- ระบุพารามิเตอร์ตัวส่ง มีไทป์เป็น Object หรือ object แล้วตั้งชื่ออะไรก็ได้ ในที่นี้ชื่อ sender
- ระบุพารามิเตอร์ตัวรับ มีไทป์เป็น EventArgs แล้วตั้งชื่ออะไรก็ได้ ในที่นี้ชื่อ e ดังรูป

ทราบได้อย่างไรว่าตัวส่งต้องมีไทป์เป็น Object ตัวรับต้องเป็น EventArgs ?
- ผมก็ไม่แน่ใจนัก แต่ผมอาศัยการสังเกต จากตัวอย่างในหนังสือ หรืออ่านจากคู่มืออ้างอิง เพราะแต่ละออบเจ็กต์อาจมีเหตุการณ์ต่างกัน ส่งผลให้ตัวส่งและตัวรับอาจต่างกันด้วย แล้วแต่กรณีไป
- รูปด้านล่างนี้ มาจาก msdn.microsoft.com

แบบฝึกหัด
- จากโค้ด จงเปลียนจากเหตุการณ์ Click เป็น DoubleClick แล้วแสดงข้อความว่า "You Double Click!" ออกทาง Console (จอดำ)

1 ความคิดเห็น:

  1. you are actually a excellent webmaster. The web site loading pace is incredible.
    It seems that you are doing any distinctive trick. In addition, The contents are masterwork.

    you've done a fantastic activity in this topic!

    my web blog: anti cellulite treatment

    ตอบลบ