|  | 
 
|  
 หากใครที่ติดตามผลงานของแอดมินมาตลอด ให้สังเกตว่าเวลาที่แอดมินออกแบบหน้าตาโปรแกรม เพื่อให้เกิด ความเป็นมิตรกับผู้ใช้ (User-Friendly) มากที่สุด แอดมินจะสร้างหน้าจอ (ฟอร์ม) ให้ User ใช้งานเพียงหน้าจอเดียว เช่น หน้ารายการขายสินค้า เวลาเลือกรายชื่อลูกค้าเข้ามา ก็จะเกิดการเปิดฟอร์มลูกค้าขึ้นมาเพื่อให้เลือก หรือเพิ่ม หรือแก้ไขได้เลยทันที โดยไม่ต้องปิดฟอร์มการขาย แล้วกลับไปทำรายการลูกค้าก่อน หรือแม้แต่การเลือกรายชื่อสินค้า หรืออื่นๆ ก็จะใช้วิธีเดียวกัน เรื่องแบบนี้มันต้องมีเงี่ยนงำแน่ๆ 5555+ ...
 
 ติ๊บเล็กๆนี้สำคัญมาก ในการทำฟอร์มลูก (MDI Child Form) สามารถแสดงผลฟอร์มแบบอยู่บนสุดได้ หรือที่เราเรียกว่า Modal (หากไม่ใช่เราเรียกว่า Modaless) ซึ่งใน VB6 มันทำไม่ได้ หากเรากำหนดให้มันเป็นฟอร์มลูก (SDI - Single Document Inteface) ของ MDI Form (Multiple Document Interface) แต่สำหรับ VB.NET กลับทำได้ง่ายดายมาก ความสำคัญมันอยู่ที่ตอนนำไปใช้งาน ...
 
 มาดูโค้ด(ง่ายๆ)กันเถอะ ... (สำหรับ MDI Form)
 
 คัดลอกไปที่คลิปบอร์ดPublic Class MDIForm
    Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click
        '// แจ้งว่าไม่ใช่เกิดการเรียกฟอร์มแบบ Modal
        blnSubForm = False
        '// มีการเปิดฟอร์มค้างไว้บนหน้าจอหรือไม่
        If Application.OpenForms().OfType(Of Form1).Any Then
            With Form1
                .Focus()
            End With
            '// ไม่มีการเปิดฟอร์ม ก็ทำการเปิดขึ้นมาใหม่ โดยกำหนดให้เป็น Form1 เป็นฟอร์มลูกของ MDIForm
        Else
            With Form1
                '// กำหนดฟอร์ม Form1 ให้เป็นฟอร์มลูกของฟอร์มหลัก
                .MdiParent = Me
                .Show()
            End With
        End If
    End Sub
    Private Sub ToolStripButton2_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton2.Click
        blnSubForm = False
        '/
        If Application.OpenForms().OfType(Of Form2).Any Then
            With Form2
                .Focus()
            End With
        Else
            With Form2
                .MdiParent = Me
                .Show()
            End With
        End If
    End Sub
End Class
โค้ดสำหรับการเรียกเปิดจากฟอร์มลูก (MDI Child Form) ...
 
 คัดลอกไปที่คลิปบอร์ดPublic Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        '// หากเป็นฟอร์มแบบ Modal ให้ปิดการมองเห็นของปุ่ม
        If blnSubForm Then
            Button1.Visible = False
        Else
            Button1.Visible = True
        End If
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        '// เปิดฟอร์มแบบ Modal
        blnSubForm = True
        '// สร้าง Instance Name ของ Form2 ขึ้นมาใหม่
        Dim frm As New Form2
        '// โชว์ฟอร์มแบบ Modal
        frm.ShowDialog()
    End Sub
End Class
สิ่งที่สำคัญคือ การใช้ตัวแปรแบบ Public ในการกำหนดการแสดงผล เวลาที่ฟอร์มลูกมันถูกเรียกขึ้นมาใช้งานในแต่ละครั้ง ...
 
 คัดลอกไปที่คลิปบอร์ดModule Module1
    Public blnSubForm As Boolean
End Module
ดาวน์โหลดโค้ด VB.NET (2010) ได้ที่นี่ ...
 
 | 
 |