Application.Run(Form)
bắt đầu vòng lặp tin nhắn trên chuỗi hiện tại và hiển thị biểu mẫu được chỉ định. Vòng lặp tin nhắn cho phép biểu mẫu nhận tin nhắn Windows (ví dụ: nhấn phím, bấm chuột, vô hiệu hóa sơn) để cho phép nó xuất hiện phản hồi và tương tác với người dùng. Khi bạn gọi ShowDialog()
trên một ví dụ Form
, nó thực sự thực hiện một điều tương tự và tạo một vòng lặp thông báo phương thức cho biểu mẫu mà trên đó ShowDialog
đã được gọi.
Không có nhiều sự khác biệt giữa hai cuộc gọi. Application.Run
không thêm một số xử lý sự kiện bổ sung cho phép bạn làm một số dọn dẹp các tài nguyên khi biểu mẫu chính bị đóng (xem).
Cách được khuyến nghị để khởi động ứng dụng WinForms đang sử dụng Application.Run
, nhưng tôi nghi ngờ đây là quy ước hơn quy tắc. Lý do lớn nhất để sử dụng Application.Run
là nếu bạn muốn mở nhiều biểu mẫu không theo phương thức. Bạn có thể làm điều này bằng:
new Form().Show();
new Form().Show();
Application.Run();
Bạn không thể đạt được điều này bằng cách sử dụng phương pháp ShowDialog()
là một trong những hình thức sẽ phải được phương thức.
Đối với câu hỏi của bạn như thế nào để hiển thị một hình thức đăng nhập và sau đó là hình thức chính nếu đăng nhập thành công, tôi nghĩ rằng những gì bạn có là tốt:
if (new LoginForm().ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());
}
Cách khác là để làm tự sửa ống nước và mở một phiên bản MainForm
trong sự kiện đóng của LoginForm
nếu thông tin đăng nhập thành công.
Vì vậy, điều này có nghĩa là bạn có thể có một vòng lặp tin nhắn trên cùng một chủ đề như hai hình thức trong khi có thể xử lý ba riêng biệt? – SomeNickName