เกริ่นนำ
เมื่อมาถึงจุดหนึ่งของการพัฒนา Windows Form ในภาษา C#.NET เราก็ต้องการโค้ดสำหรับการใช้งานที่มีระดับที่สูงขึ้น บทความชุดนี้จะนำตัวอย่างการใช้งาน Application Lifetime เพื่อประยุกต์กับ Mdi Form และ และฟอร์มลูกอื่นๆ ก่อนอื่นเรามารู้จัก Application Lifetime กันก่อนนะครับ การใช้งานพื้นฐาน และการประยุกต์จะแตกต่างออกไป
เมื่อมาถึงจุดหนึ่งของการพัฒนา Windows Form ในภาษา C#.NET เราก็ต้องการโค้ดสำหรับการใช้งานที่มีระดับที่สูงขึ้น บทความชุดนี้จะนำตัวอย่างการใช้งาน Application Lifetime เพื่อประยุกต์กับ Mdi Form และ และฟอร์มลูกอื่นๆ ก่อนอื่นเรามารู้จัก Application Lifetime กันก่อนนะครับ การใช้งานพื้นฐาน และการประยุกต์จะแตกต่างออกไป
๑. โค้ดของ Program.cs
การใช้งานโค้ดทั่วไปมีดังนี้
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace Winapp_Project { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MdiForm1()); } } }
เราจะเห็นว่ามีการกำหนดให้รันฟอร์มใหน ก็สามารถทำการใส่ชื่อฟอร์ม ตามโค้ด
Application.Run(new MdiForm1());
ได้เลย แต่กรณีที่มีการจัดการแบบหลายๆฟอร์มแล้วการเข้าถึง ฟอร์มต่างๆ จะยากขึ้นมากเนื่องด้วยการเขียนโปรแกรมเชิงออบเจคต์ จะต้องมีการเข้าถึง Class ต่างๆ ได้ยากขึ้น
Application.Run(new MdiForm1());
ได้เลย แต่กรณีที่มีการจัดการแบบหลายๆฟอร์มแล้วการเข้าถึง ฟอร์มต่างๆ จะยากขึ้นมากเนื่องด้วยการเขียนโปรแกรมเชิงออบเจคต์ จะต้องมีการเข้าถึง Class ต่างๆ ได้ยากขึ้น
มาดูโค้ดใหม่กันเลยเดี๋ยวจะงง
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace Restaurant_WinAPP { static class Program { public static frmMdiBackOffice main1 = new frmMdiBackOffice(); //Mdi Form public static Form1 frmstaff = new Form1(); //Staff Form public static frmLogin frmlogin = new frmLogin(); //Login Form /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); frmlogin.Show(); System.Windows.Forms.Application.Run(); } } }
คุณจะเห็นว่ามีการเพิ่ม การกำหนดค่าฟอร์มก่อนนำมาใช้งานตามตัวอย่าง เช่น
public static frmMdiBackOffice main1 = new frmMdiBackOffice(); //Mdi Form
public static Form1 frmstaff = new Form1(); //Staff Form
public static frmLogin frmlogin = new frmLogin(); //Login Form
คุณจำเป็นที่จะต้องกำหนดทุกฟอร์มที่มี เพื่อใช้เรียกใช้งานในภายหลัง หลังจากนั้นก็สามารถเปลี่ยนฟอร์มใช้งานเริ่มต้นได้ตามต้องการตามตัวอย่างผมใช้ frmlogin ก่อนเนื่องด้วยส่วนมากจะใช้งานฟอร์มนี้ก่อนเสมอ ซึ่งก็แล้วแต่การออกแบบโปรแกรม
public static frmMdiBackOffice main1 = new frmMdiBackOffice(); //Mdi Form
public static Form1 frmstaff = new Form1(); //Staff Form
public static frmLogin frmlogin = new frmLogin(); //Login Form
คุณจำเป็นที่จะต้องกำหนดทุกฟอร์มที่มี เพื่อใช้เรียกใช้งานในภายหลัง หลังจากนั้นก็สามารถเปลี่ยนฟอร์มใช้งานเริ่มต้นได้ตามต้องการตามตัวอย่างผมใช้ frmlogin ก่อนเนื่องด้วยส่วนมากจะใช้งานฟอร์มนี้ก่อนเสมอ ซึ่งก็แล้วแต่การออกแบบโปรแกรม
๒. การเรียกใช้งานและการกำหนดค่าใช้งานแต่ละฟอร์ม
ต่อไปผมจะอธิบายเกี่ยวกับการใช้งานโดยฟอร์มอื่นๆ จากตัวอย่างผมไม่ได้กำหนด เมนูไว้ใน mdiform แต่แยกออกไปทำฟอร์มใหม่ แล้วเรียกใช้แต่ละฟอร์มตามเมนูนั้น
ต่อไปผมจะอธิบายเกี่ยวกับการใช้งานโดยฟอร์มอื่นๆ จากตัวอย่างผมไม่ได้กำหนด เมนูไว้ใน mdiform แต่แยกออกไปทำฟอร์มใหม่ แล้วเรียกใช้แต่ละฟอร์มตามเมนูนั้น
เมื่อมีการคลิ๊กเมนูฟอร์ม ซึ่งไม่ใช่ใน mdiForm สามารถอ้างให้ใช้ mdiParent ตามโค้ดนี้
Program.frmstaff.MdiParent = Program.main1;
Program.frmstaff.Show();
ซึ่งทั้งหมดนี้จะช่วยแก้ปัญหาในการใช้งาน การตั้งตัวแปรเพื่อเรียกใช้งานฟอร์ม หวังว่าคงมีประโยชน์กับการใช้งานนะครับ
No comments:
Post a Comment