[VB.NET] การเปิดฟอร์มลูก (MDI Child Form) ให้แสดงผลแบบอยู่บนสุด (Modal)
http://www.g2gnet.com/webboard/images/vbnet/mdichildmodal.pngหากใครที่ติดตามผลงานของแอดมินมาตลอด ให้สังเกตว่าเวลาที่แอดมินออกแบบหน้าตาโปรแกรม เพื่อให้เกิด ความเป็นมิตรกับผู้ใช้ (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) ได้ที่นี่ ...
ขอบคุณครับอาจารย์ ขบคุณครับ ขอบคุณครับ ตอนนี้ไล่อ่าน vb.net มันยากใช้ได้เลยครับ hot2 ตอบกลับเมื่อ 2020-7-8 19:20
ขอบคุณครับ ตอนนี้ไล่อ่าน vb.net มันยากใช้ได้เลยครับ
ผมก็ต้องใช้เวลาพอสมควรครับ ... เป็นปี 5555+ คงเวียนๆมาถามบ่อยๆละครับ
หน้า:
[1]