26 พฤศจิกายน 2553

VB.Net จับ Form ใส่ SplitContainer

จับปูใส่กระด้ง กับ จับฟอร์มใส่ splitContainer เหมือนกันหรือไม่ ?
คงไม่เหมือนกันเพราะปูสามารถเดินหลุดออกจากกระด้งได้
แต่ ฟอร์มมันจะหลุดออกจาก SplitContainer ไม่ได้

อ่านไปอ่านมาก็คงจะแปลกใจ ว่าทำไมถึงต้องมาจับฟอร์มใส่ไว้ใน SplitContainer
แต่เมื่ออ่านบทความนี้ แล้วทำตามจนสำเร็จ ก็คงจะไม่แปลกใจว่าทำไมเราจะต้องจับฟอร์มให้มันมาอยู่ใน SplitContainer

เพราะเหตุเหรอ ก็อยากให้มันมาอยู่ในนี้ ยิ่งอ่านยิ่งงงใช่ไหม งั้นมาเริ่มทำกันเลยดีกว่า
1. เปิด Visual Studio 20xx จากนั้นคลิกเลือก New Project....
เลือก Visual Basic -> Windows -> Windows Forms Application
ที่ช่อง Name ป้อน myFormSplitContainer













2. ที่ฟอร์ม Designer ของ form1 ให้ตกแตงฟอร์มตามตัวอย่าง















- ลาก MenuStrip มาวางไว้ที่ฟอร์ม แล้วใส่รายการตามภาพด้านบน
- ลาก SplitContainer มาวางไว้ที่ฟอร์ม
- ลาก TreeView มาวางไว้ที่ SplitContainer ฝั่งด้านซ้าย (panel 1) แล้วจัดให้สวยงาม
- ให้กำหนด Property ของฟอร์ม ชื่อ IsMdiContainer กำหนดให้เป็น True
3. ที่ TreeView ให้คลิกที่แถบมุมบนด้านขวาเพื่อเปิดเมนู แล้วเลือก Edit Nodes...

- ทำการเพิ่ม Node เข้าไปโดยคลิกที่ Add Root หรือ Add Child


















4. จากนั้นไปที่เมนู ดับเบิ้ลคลิกที่รายการเมนูชื่อ "เปิดฟอร์ม 1" (จะเข้าหน้าต่างเขียนคำสั่ง)














ให้เขียนคำสั่ง ดังนี้

Private Sub เปดฟอรม1ToolStripMenuItem_Click(ByVal sender As System.Object,  _
ByVal e As System.EventArgs) Handles เปดฟอรม1ToolStripMenuItem.Click
     If myFindForm("form2") = False Then
          Dim frm As Form2
          frm = New Form2
          frm.TopLevel = False
          frm.Parent = Me.SplitContainer1.Panel2
          frm.Show()
          frm.BringToFront()
      End If
End Sub

Function myFindForm(ByVal frm As String) As Boolean
    For Each ctl As Control In Me.SplitContainer1.Panel2.Controls
        If ctl.Name.ToUpper = frm.ToUpper Then
            ctl.Show()
            ctl.BringToFront()
            Return True
        End If
   Next
   Return False
End Function

5. ให้ทำการสร้างฟอร์มขึ้นมาใหม่อีก 1 ฟอร์ม โดยกดปุ่ม Ctrl + Shift + A
จากนั้นคลิกที่ Windows Form -> Windows Form แล้วตั้งชื่อฟอร์มว่า Form2.vb ดังภาพ



















6. ตกแต่งหน้าจอของฟอร์ม form2.vb ตามชอบใจ หรือจะเลียนแบบ ตามภาพด้านล่าง




















7. ทำการ run โปรแกรมที่เขียนไว้โดยกดปุ่ม F5
จากนั้นก็ทดสอบเลือกเมนู ฟอร์ม -> เปิดฟอร์ม 1 ก็จะได้ผลลัพธ์ดังภาพ



















ถ้าหากผู้อ่านทำตามขั้นตอนมาถึงจนได้ผลลัพธ์ที่เห็นดังภาพ ก็คงหมดข้อสงสัยว่าทำไม่ต้องจับฟอร์มใส่ SplitContainer

โชคดี มีวิธีใช้ฟอร์มแบบใหม่ ๆ

2 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

มัน clear ของเก่าหมดเลยอะครับ
เช็คได้ไหมว่า form ใหนที่เปิดอยู่แล้วไม่ต้อง clear และก็ไม่ต้องเปิดใหม่
ขอบคุณครับ

เกษม กมลชัยพิสิฐ กล่าวว่า...

แก้โค้ดให้ใหม่แล้วตามที่ต้องการ

"I Believe in You"

Copyright(c) 2007 - 2022 by Kasem Kamolchaipisit.