Làm sao để Form chỉ xuất hiện một lần?
Moderators: tungblt, vuathongtin
Làm sao để Form chỉ xuất hiện một lần?
Mình viết ứng dụng bằng vb.net, làm thế nào để form đỏ chỉ xuất hiện 1 lần thôi.
Ví dụ: Vào menu chọn "Xuất hàng" để mở form frmxuathang, nếu vào menu mở form đó lần nữa thì cũng chỉ xuất hiện form đã mở mà thôi
Mình đã vào đây: http://www.caulacbovb.com/forum/viewtop ... f=8&t=9620 nhưng vẫn chưa làm được
Mong các bạn hướng dẫn, cảm ơn nhiều./.
Ví dụ: Vào menu chọn "Xuất hàng" để mở form frmxuathang, nếu vào menu mở form đó lần nữa thì cũng chỉ xuất hiện form đã mở mà thôi
Mình đã vào đây: http://www.caulacbovb.com/forum/viewtop ... f=8&t=9620 nhưng vẫn chưa làm được
Mong các bạn hướng dẫn, cảm ơn nhiều./.
- nhochoclaptrinh
- Thành viên danh dự
- Posts: 517
- Joined: Sat 28/05/2011 12:10 pm
- Has thanked: 15 times
- Been thanked: 83 times
-
- Guru
- Posts: 701
- Joined: Wed 23/04/2008 8:14 am
- Location: Biên Hòa Đồng Nai
- Been thanked: 111 times
Re: Làm sao để Form chỉ xuất hiện một lần?
Cái này bạn tham khảo cách thao tác trên MDI from mổi lần chỉ mở ra 1 cửa sổ thui trên diẽn đàn có nhiều.http://www.caulacbovb.com/forum/viewtop ... DI#p103970
Tôi dùng ToolStrip1
Tôi dùng ToolStrip1
- Private Sub CloseChildFrom() 'hàm đóng form củ
- If Me.MdiChildren.Length > 0 Then
- Me.ActiveMdiChild.Close()
- End If
- End Sub
- Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click ' mở 1 form khác
- CloseChildFrom()
- Dim Admi As New Admin
- Admi.MdiParent = Me
- Admi.Show()
- Admi.WindowState = FormWindowState.Maximized
- End Sub
- dazzlingvit
- Guru
- Posts: 960
- Joined: Tue 18/01/2011 10:21 am
- Location: Sinh ra từ hư vô, sống trong thế giới ảo...
- Has thanked: 7 times
- Been thanked: 112 times
- Contact:
Re: Làm sao để Form chỉ xuất hiện một lần?
Bạn có thể thêm một biến tĩnh (static) kiểu bool (đúng/sai) để xác định xem form đó đã được mở chưa.windowsxp wrote:Mình viết ứng dụng bằng vb.net, làm thế nào để form đỏ chỉ xuất hiện 1 lần thôi.
Ví dụ: Vào menu chọn "Xuất hàng" để mở form frmxuathang, nếu vào menu mở form đó lần nữa thì cũng chỉ xuất hiện form đã mở mà thôi
Mình đã vào đây: http://www.caulacbovb.com/forum/viewtop ... f=8&t=9620 nhưng vẫn chưa làm được
Mong các bạn hướng dẫn, cảm ơn nhiều./.
Ví dụ:
- class MainForm Form
- {
- protected static bool DaMo = false;
- // ...
- }
Mỗi lần mở form, bạn kiểm tra MainForm.DaMo có bằng false không, nếu là false thì mở form và gán gtrị MainForm là true. Sau đó, bạn bắt sự kiện đóng Form để khi đóng Form, bạn lại gán MainForm.DaMo = false.
- protected void Form_FormClosed(object sender, EventArgs e)
- {
- DaMo = false;
- }
-
- Guru
- Posts: 701
- Joined: Wed 23/04/2008 8:14 am
- Location: Biên Hòa Đồng Nai
- Been thanked: 111 times
Re: Làm sao để Form chỉ xuất hiện một lần?
Làm theo kiểu Form cha con rồi còn gì, mổi lần mở thì kiểm tra đóng cái form con lại mở cái thằng cần chọn ra cửa sổ form cha thôi.
Re: Làm sao để Form chỉ xuất hiện một lần?
Với MDI Form thì bạn dùng function này để check coi thữ form mdi child mỡ hay chưa bằng cách kiểm tra bằng tên hiển thị cũa form (form.Text)
Nếu như bạn muốn mỡ FormXuatHang thì viết như sau:
- Public Function IsFormOpen(ByVal formCaption As String) As Boolean
- For Each childForm In Me.MdiChildren
- If childForm.Text = formCaption Then
- childForm.BringToFront()
- Return True
- End If
- Next
- Return False
- End Function
Nếu như bạn muốn mỡ FormXuatHang thì viết như sau:
- If Not IsFormOpen("Xuất Hàng") Then
- Dim frm As New FormXuatHang()
- frm.MdiParent = Me
- frm.Show()
- End If
Re: Làm sao để Form chỉ xuất hiện một lần?
Mình chưa thạo thao tác với form dạng cha/con, form của mình tạo là windows form thì thao tác như thế nào ạ?
-
- Guru
- Posts: 701
- Joined: Wed 23/04/2008 8:14 am
- Location: Biên Hòa Đồng Nai
- Been thanked: 111 times
Re: Làm sao để Form chỉ xuất hiện một lần?
Set thuộc tính lên form chính isMDIcontainer = TRUE làm Form cha hiển nhiên các thèng còn lại là con
Sau đó chọn sự kiện Click trên Menu "bấm đúp vào"
Sau đó chọn sự kiện Click trên Menu "bấm đúp vào"
- Attachments
-
- MDI.rar
- Ví dụ
- (57.25 KiB) Downloaded 287 times
-
- Thành viên năng nổ
- Posts: 61
- Joined: Mon 13/04/2009 8:38 am
- Location: Thạch Thành, Thanh Hóa
Re: Làm sao để Form chỉ xuất hiện một lần?
Đây là cách của mình (C#)
1. Kiểm tra sự tồn tại
2. Hiển thị:
3. Sử dụng
4. Ghi chú:
- Quan trọng: nếu chưa có thì hiện ra, mà có rồi thì phải kích hoạt cho cửa sổ đó.
- Với phương thức F.Show();, còn rất nhiều vấn đề nữa phải xử lý. Ở đây, tôi chỉ nói cách đơn giản nhất thôi.
1. Kiểm tra sự tồn tại
- private static bool subFormExisted(Form F)
- {
- bool kq = false;
- foreach (Form frm in Application.OpenForms)
- {
- if (frm.Name == F.Name)
- {
- kq = true;
- goto ExitFor;
- }
- }
- ExitFor
- return kq;
- }
2. Hiển thị:
- public static void subShowAnotherForm(Form F)
- {
- bool m_Existed = subFormExisted(F);
- if (m_Existed)
- {
- Application.OpenForms[F.Name].Activate();
- F.Close();
- }
- else
- {
- F.Show();
- }
- }
3. Sử dụng
- private static void ChạyThử()
- {
- subShowAnotherForm(new Form2());
- /*
- Form2 f2 = new Form2();
- subShowAnotherForm(f2);
- */
- }
4. Ghi chú:
- Quan trọng: nếu chưa có thì hiện ra, mà có rồi thì phải kích hoạt cho cửa sổ đó.
- Với phương thức F.Show();, còn rất nhiều vấn đề nữa phải xử lý. Ở đây, tôi chỉ nói cách đơn giản nhất thôi.