Tôi có 2 biểu mẫu ... khi tôi khởi động ứng dụng..và sử dụng dấu "X" từ thanh tiêu đề, toàn bộ ứng dụng đóng ... bây giờ khi tôi chọn một tùy chọn từ biểu mẫu 1 trong trường hợp của tôi nó là một nút "ADD" như là một ứng dụng danh bạ .. nó đi đến hình thức thứ 2 như tôi đã sử dụng 1stform.hide() và 2ndform.show() ... bây giờ khi tôi làm "X" từ tiêu đề thanh nó không tắt hoàn toàn như 1form không đóng cửa .... làm thế nào để chương trình nó theo cách như vậy tht bất kỳ giai đoạn toàn bộ ứng dụng nên đóngĐể đóng ứng dụng C# Forms
Trả lời
Biểu mẫu đầu tiên của bạn được đặt làm biểu mẫu khởi động. Điều đó có nghĩa là bất cứ khi nào nó được đóng lại, toàn bộ ứng dụng của bạn sẽ bị đóng. Và ngược lại, đơn đăng ký của bạn không đóng cho đến nó sẽ bị đóng. Vì vậy, khi bạn ẩn biểu mẫu khởi động và hiển thị biểu mẫu thứ hai, người dùng đóng biểu mẫu thứ hai không kích hoạt đóng ứng dụng của bạn vì họ chỉ đóng một hộp thoại phụ, không theo phương thức.
Tôi khuyên bạn nên thay đổi thiết kế của mình để biểu mẫu khởi động cũng là dạng chính của ứng dụng của bạn. Không có ý nghĩa cố gắng để làm việc xung quanh chức năng được xây dựng trong đó thực sự có thể hữu ích. Bạn muốn ứng dụng thoát khi biểu mẫu chính bị đóng, bất kể các biểu mẫu con khác được mở ra.
Nhưng giải pháp nhanh chóng và bẩn trong trường hợp của bạn là thực hiện cuộc gọi đến Application.Exit
. Điều đó sẽ đóng tất cả các biểu mẫu hiện đang mở và thoát khỏi ứng dụng của bạn ngay lập tức. Như tôi đã nói ở trên, tôi không đề nghị cách tiếp cận này vì phải gọi Application.Exit
từ mọi hình thức xử lý sự kiện của FormClosed
là một dấu hiệu cho thấy có điều gì đó đã nghiêm trọng sai trong thiết kế của bạn.
Nếu mô hình mẫu đơn khởi động không hoạt động cho bạn, bạn nên xem xét việc đưa vấn đề vào tay mình và tùy chỉnh phương thức Main
trong tệp nguồn Program.cs
của bạn. Xem các câu trả lời được cung cấp cho this related question để biết một số ý tưởng về cách có thể phù hợp với bạn.
+1: Câu trả lời hay! –
CloseEvent là gì ?? .... Tôi có phải viết nó không ?? –
@Vinod: Tôi có nghĩa là sự kiện 'FormClosed'. Các tài liệu có sẵn [ở đây] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosed.aspx), nhưng nó chỉ là một sự kiện thường xuyên được trưng ra bởi lớp 'Form' . Bạn có thể đăng ký nó giống như bất kỳ sự kiện nào khác trong ứng dụng của bạn (ví dụ: 'Button.Click'). –
Điều bạn có thể làm là sử dụng sự kiện của Form FormClosing
và thêm đoạn mã sau:
Application.Exit();
Điều này sẽ dừng toàn bộ ứng dụng và đóng tất cả các cửa sổ. Tuy nhiên, nếu một chuỗi nền đang chạy, quá trình tự nó sẽ tồn tại. Trong trường hợp này bạn có thể sử dụng:
Environment.Exit();
Chủ đề nền không ngăn quá trình thoát khỏi vì nó tự động tắt.Có thể bạn đang đề cập đến một chuỗi tiền cảnh. –
@ João Angelo - Điều tôi muốn nói ở đây là nếu một số luồng đang chạy, chỉ có luồng GUI sẽ bị gỡ xuống và ứng dụng dường như đã bị đóng, nhưng quá trình vẫn còn trong danh sách quy trình. Cảm ơn bạn đã chỉ ra :) –
Thêm một Application.Exit trên tất cả các hình thức của sự kiện bế mạc
như thế này:
Tạo một event handler đóng cửa đầu tiên
private void Form_ClosingEventhandler()(object sender, CancelEventArgs e)
{
//Perform any processing if required like saving user settings or cleaning resources
Application.Exit();
}
sau đó ràng buộc sự kiện này cho bất kỳ biểu mẫu nào bạn tạo.
//Where you create new form and show it.
Form1 frm= new Form1();
//set other properties
frm.Closing += new EventHandler(Form_ClosingEventhandler);
Form2 frm2= new Form2();
//set other properties
frm2.Closing += new EventHandler(Form_ClosingEventhandler);
đã làm việc cho tôi cảm ơn! +1 – Vbp
Chắc chắn bạn không muốn tắt toàn bộ ứng dụng sau khi người dùng thêm số điện thoại? Bạn chỉ cần đảm bảo rằng cửa sổ chính của bạn sẽ hiển thị trở lại. Viết như thế này:
private void AddButton_Click(object sender, EventArgs e) {
var frm = new AddPhoneNumber();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = this.Location;
frm.Size = this.Size; // optional
frm.FormClosing += delegate { this.Show(); };
frm.Show();
this.Hide();
}
- 1. nút Escape để đóng Windows Forms hình thành trong C#
- 2. Cách thoát Ứng dụng Windows Forms trong C#
- 3. Mã thoát từ ứng dụng Windows Forms
- 4. Nhấp nháy trong ứng dụng Windows Forms
- 5. Bản đồ với ứng dụng Windows Forms
- 6. Đóng các ứng dụng
- 7. Sử dụng Console.WriteLine trong ứng dụng Windows Forms
- 8. Có cách nào để chuyển đổi ứng dụng Console của tôi thành ứng dụng Windows Forms trong C# không?
- 9. Cách sử dụng Ninject trong ứng dụng Windows Forms?
- 10. làm thế nào để lấy đường dẫn vật lý ứng dụng trong ứng dụng Windows Forms
- 11. Trình soạn thảo email HTML trong ứng dụng Windows Forms
- 12. Windows Forms: tạo ứng dụng chính sau khi đăng nhập, biểu mẫu nào để chạy?
- 13. Thêm bộ hẹn giờ vào ứng dụng Windows Forms
- 14. Cuộc gọi đa luồng trong ứng dụng Windows Forms?
- 15. Hỏi người dùng trước khi đóng ứng dụng C# WPF
- 16. Thư viện nén C++ (zip) cho ứng dụng nguồn đóng
- 17. Chạy ứng dụng C# Windows Forms trên Windows 7 trong Parallels 8 lỗi
- 18. RaceOnRCWCleanup khi đóng các ứng dụng WPF
- 19. Chọn phông chữ cho ứng dụng Windows Forms
- 20. Phông chữ mặc định cho ứng dụng Windows Forms
- 21. Bộ chọn màu cho các ứng dụng Windows Forms
- 22. .NET SplitContainer bằng C# Windows Forms
- 23. Hoạt ảnh đơn giản sử dụng C#/Windows Forms
- 24. Cách đóng ứng dụng JavaFX khi đóng cửa sổ?
- 25. Đóng gói ứng dụng Node.js làm ứng dụng osx
- 26. WiX đóng ứng dụng trước khi gỡ cài đặt - đóng ứng dụng đang mở tin nhắn
- 27. Đóng cửa sổ xoay jfreechart đóng toàn bộ ứng dụng
- 28. Java tương đương với Windows Forms của C# để xây dựng các ứng dụng GUI dễ dàng và nhanh chóng
- 29. Nhập Windows Forms (C#), Visual Studio 2012
- 30. Cách đóng ứng dụng khác trong Android?
bởi "Ở bất kỳ giai đoạn nào" bạn có ý nghĩa dưới mọi hình thức không ?? –
yes..Từ bất kỳ biểu mẫu nào ... chỉ có 3 trong trường hợp của tôi –