my2alee โพสต์ 2019-10-16 13:57:40

ให้ปิด form ที่เปิดอยู่ ก่อนที่จะเปิดฟอร์มใหม่ [VB6.0]

แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2019-10-17 11:02


โปรเจ็คผมมี เป็นแบบ MDIForm
ประกอบด้วย form ลูกหลายฟอร์มด้วยกัน
>> ถ้า สมมุติ ผมคลิกเปิดฟอร์มใดฟอร์มหนึ่งขึ้นมา และไปคลิกเปิดฟอร์มอื่นหรือคลิกเปิดฟอร์มใดๆ โดยที่ยังไม่ปิดฟอร์มที่เปิดอยู่ก่อน-------- อาจจะให้มีข้อความแจ้งเตือนแล้วปิดฟอร์มที่เปิดอยู่อัตโนมัติ ก่อนแสดงฟอร์มที่ต้องการเปิดใหม่ขึ้นมาครับ
ประมาณว่า ให้ปิดฟอร์มที่เปิดอยู่ก่อนจึงจะเปิดฟอร์มอื่นๆได้
>> ขอแนวทางหน่อยครับ อ.

codingza โพสต์ 2019-10-17 10:01:01

ไม่รู้ว่าแบบนี้หรือเปล่า
สร้าง Form ขึ้นมา 2 Form
มี Form1 และ Form2
Form1 สร้าง Button ขึ้นมา 1 ตัว เพื่อเปิด Form2 (เมื่อกดเปิด Form2 ให้ Form1 ปิดตัวไป)

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      MsgBox("ปิด Form1 แล้วเปิด Form2")
      Me.Hide()
      Form2.Show()
    End Sub
End Class

Form2 สร้าง Button ขึ้นมา 1 ตัว เพื่อเปิด Form1 (เมื่อกดเปิด Form1 ให้ Form2 ปิดตัวไป)

Public Class Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      MsgBox("ปิด Form2 แล้วเปิด Form1")
      Me.Close()
      Form1.Show()
    End Sub
End Class

*** Form หลัก ไม่สามารถใช้คำสั่ง Me.Close() ได้ ใช้ได้แค่ Me.Hide() คือซ่อนเท่านั้น

my2alee โพสต์ 2019-10-17 11:01:15

codingza ตอบกลับเมื่อ 2019-10-17 10:01
ไม่รู้ว่าแบบนี้หรือเปล่า
สร้าง Form ขึ้นมา 2 Form
มี Form1 แล ...

ลืมบอกไปครับ VB6.0

thongkorn โพสต์ 2019-10-17 12:11:12

เป็นโค้ดฟังค์ชั่นในการเช็คว่า หากไม่ใช่ฟอร์ม MDI แสดงว่ามีการโหลดฟอร์มลูกขึ้นมา นำไปประยุกต์เพิ่มเองงล่ะกันครับผม ...
Option Explicit

Private Sub mnuForm1_Click()
    If CheckForm Then
      MsgBox "Please Close Child Form"
    Else
      Form1.Show
    End If
End Sub

Private Sub mnuForm2_Click()
    If CheckForm Then
      MsgBox "Please Close Child Form"
    Else
      Form2.Show
    End If
End Sub

Public Function CheckForm() As Boolean
    Dim Form As Form
    For Each Form In Forms
      '/ Not MDI Form
      If Form.Name <> "MDIForm1" Then
            CheckForm = True
            '// หากต้องการปิดฟอร์มอื่นๆที่ไม่ใช่ MDI Form
            'Unload Form
      Else
            CheckForm = False
      End If
   Next Form
   Set Form = Nothing
End Function

my2alee โพสต์ 2019-10-17 13:39:44

ขอบคุณท่าน codingza และ อ.thongkorn ด้วยครับ
ได้แล้วครับ อ. งมอยู่ตั้งนาน
หน้า: [1]
ดูในรูปแบบกติ: ให้ปิด form ที่เปิดอยู่ ก่อนที่จะเปิดฟอร์มใหม่ [VB6.0]