วันอาทิตย์ที่ 15 มีนาคม พ.ศ. 2552

เทคนิคการควบคุมคอนโทลหลายๆ ตัวในเวลาเดียวกัน

เวลาจะ Disable หรือ Enable คอนโทลในฟอร์ม จะใช้ควบคุมผ่าน Property ที่ชื่อว่า Enable โดยการสั่งงานไปยังคอนโทลแต่ละตัวโดยตรง แต่หากในฟอร์มนั้นมีคอนโทลเยอะๆ การเขียนโปรแกรมเพื่อที่จะปิดเปิดหลายๆ ตัวในเวลาเดียวกันเป็นเรื่องที่ลำบากพอสมควร ยิ่งหากมีการปรับเปลี่ยนคอนโทลภายในฟอร์มในขณะทำงานจริงด้วยแล้วยิ่งปวดหัวใหญ่
เทคนิคง่ายๆ ที่ใช้ควบคุมฟอร์มคือการใช้ Property ที่ชื่อว่า tag ซึ่งอยู่ภายในคอนโทลทุกตัวแล้ว มีขั้นตอนดังนี้

1. กำหนดค่าภายใน tag ที่เราต้องการควบคุม เช่น ใส่คำว่า lock ลงใน Property นั้น
2. ทำการควบคุมคอนโทลโดยใช้เงื่อนไขตรวจสอบว่า tag นั้นเป็น string ที่มีค่าตามที่เรากำหนดไว้รึเปล่า ในที่นี้กำหนดค่าคือ lock โดยใช้ code ควบคุมดังนี้

foreach(Control ctrl in this.Controls)
{
    if((ctrl.Tag as string) == "lock")
    {
        ctrl.Enabled = true;
    }
}


หรืออาจจะเขียนเป็นฟังก์ชั่นไว้ใช้ก็สะดวกดี เช่น

private void disableForm(bool status)
{
    foreach(Control ctrl in this.Controls)
    {
        if(ctrl.Tag as string) == "lock")
        {
            ctrl.Enabled = status;
        }
    }
}