Wednesday, May 9, 2012

การใช้งาน Application กับ MDI Form ใน C#

เกริ่นนำ
เมื่อมาถึงจุดหนึ่งของการพัฒนา 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 ต่างๆ ได้ยากขึ้น
มาดูโค้ดใหม่กันเลยเดี๋ยวจะงง
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 ก่อนเนื่องด้วยส่วนมากจะใช้งานฟอร์มนี้ก่อนเสมอ ซึ่งก็แล้วแต่การออกแบบโปรแกรม
๒. การเรียกใช้งานและการกำหนดค่าใช้งานแต่ละฟอร์ม 
ต่อไปผมจะอธิบายเกี่ยวกับการใช้งานโดยฟอร์มอื่นๆ จากตัวอย่างผมไม่ได้กำหนด เมนูไว้ใน mdiform แต่แยกออกไปทำฟอร์มใหม่ แล้วเรียกใช้แต่ละฟอร์มตามเมนูนั้น
เมื่อมีการคลิ๊กเมนูฟอร์ม ซึ่งไม่ใช่ใน mdiForm สามารถอ้างให้ใช้ mdiParent ตามโค้ดนี้
Program.frmstaff.MdiParent = Program.main1;
Program.frmstaff.Show();
ซึ่งทั้งหมดนี้จะช่วยแก้ปัญหาในการใช้งาน การตั้งตัวแปรเพื่อเรียกใช้งานฟอร์ม หวังว่าคงมีประโยชน์กับการใช้งานนะครับ

No comments:

Post a Comment