HOME > บทความจากสมาชิก > Windows Form การใช้ User Control กับ MenuStrip สร้างฟร์อมแบบแบบง่ายๆ (VB.Net, C#)
Windows Form การใช้ User Control กับ MenuStrip สร้างฟร์อมแบบแบบง่ายๆ (VB.Net, C#)
Windows Form การใช้ User Control กับ MenuStrip สร้างฟร์อมแบบแบบง่ายๆ (VB.Net, C#) ในการเขียนโปรแกรมบน Windows Form แรกๆ เราจะได้รู้กับกับ Form ใช้สำหรับสร้างหน้าจอหรือ Screen ให้ทำงานตามที่ต้องการ ซึ่งในกรณีที่มีหลาย Form โดยทั่วไป มักจะนิยมใช้ .Hide และ .Show เพื่อทำการซ่อนและแสดงฟอร์มที่ต้องการ นั่นหมายถึงว่าทุกๆ Form ในกรณีที่มี Item หรือ Event ที่คล้ายกัน ก็จะต้องสร้างและตามแก้ไขในทุกๆ Form และอีกปัญหาหนึ่งที่แอดมินพบเจอคือ ในช่วงระหว่างการ .Hide และ .Show ในกรณีที่ฟอร์มที่จะแสดงผลใหม่มาแสดงนั้น จะเกิดการกระพริบของหน้าจอเกิดขึ้น
Windows Form MenuStrip and User Control
ในโปรแกรมสำเร็จรูปทั่วๆ ไป เช่นเอาง่ายๆ Microsoft Office Word เราจะเห็นว่า หลังจากที่โปรแกรมได้ทำการเปิดขึ้นมาแล้วนั้น เมื่อคลิกไปยัง Menu ต่างๆ สิ่งที่มีผลกระทบและแสดงผล จะอยู่ในส่วนของตรงกลางเนื้อห หรือ Container เท่านั้น รายการเมนูหรือ Form หลักจะยังอยู่เช่นเดิม ซึ่งรูปแบบนี้ไม่ได้อยู่เฉพาะบนโรแกรมสำเร็จรูป แต่เว็บไซต์ทั่วๆ ไปก็ใช้หลักการและวิธีนี้เช่นเดียวกัน
สำหรับบน Windows Form เราจะเรียกว่าการสร้าง Form และ User Control คือเราจะใช้การสร้าง Form หลักขึ้นมาเพียงแต่ 1 ฟอร์มเท่านั้น ที่เหลือเราจะใช้การสร้างเป็น User Control ซึ่ง User Control นี้เราสามารถสร้างการทำงานต่างๆ ได้เช่นเดียวกับ Form และเมื่อเราได้ User Control แล้ว ก็ให้ใช้การโหลด User Control นั้นๆ มาแสดงผลบน Form หลัก ในตำแหน่งที่ต้องการ
สร้าง Windows Form Application แบบง่ายๆ ขึ้นมา ในตัวอย่างยังไม่มีการเขียนอะไรเพิ่ม
ทดสอบการรันโปรแกรม จะเห็นว่ายังมีแค่หน้าจอว่างๆ
เราต้องการให้ Form หลักแสดงผลแบบ Maximized ให้กำหนด WindowState = Maximized
ทดสอบการทำงานจะเห็นว่าตอนนี้แสดงผลเต็มจอ
สร้าง MenuStrip ขึ้นมาบน Form
ตั้งชื่อว่า mainMenu
เพิ่มรายการเมนูว่า Menu1, Menu2 และ Menu3
ทดสอบการทำงาน จะเห็นว่าตอนนี้เรามี Menu ซึ่งประกอบด้วย Item คือ Menu1, Menu2 และ Menu3
สิ่งที่เราต้องการคือ เมื่อคลิกที่เมนู จะให้ Content หรือ Form ของ Menu นั้นๆ มาแสดงในส่วนของเนื้อหา
ให้เพิ่ม User Control เข้ามาใน Project โดยตั้งชื่อว่า MyUserControl1.cs, MyUserControl2.cs และ MyUserControl3.cs
รายการ Event ที่เกิดขึ้น จากนั้นเขียน Code สำหรับการดึง User Control มาแสดงผล
Code VB.Net
Private Sub mainMenu_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs)
Dim menu As String = e.ClickedItem.Text
Me.pnlForm.Controls.Clear()
Select Case menu
Case "Menu1"
Dim ctrl = New MyUserControl1()
Me.pnlForm.Controls.Add(ctrl)
Exit Select
Case "Menu2"
Dim ctr2 = New MyUserControl2()
Me.pnlForm.Controls.Add(ctr2)
Exit Select
Case "Menu3"
Dim ctr3 = New MyUserControl3()
Me.pnlForm.Controls.Add(ctr3)
Exit Select
End Select
End Sub
Code C#
private void mainMenu_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
string menu = e.ClickedItem.Text;
this.pnlForm.Controls.Clear();
switch (menu)
{
case "Menu1":
var ctrl = new MyUserControl1();
this.pnlForm.Controls.Add(ctrl);
break;
case "Menu2":
var ctr2 = new MyUserControl2();
this.pnlForm.Controls.Add(ctr2);
break;
case "Menu3":
var ctr3 = new MyUserControl3();
this.pnlForm.Controls.Add(ctr3);
break;
}
}