Gần đây tôi phát hiện ra rằng theo mặc định MessageBoxes không phải là hình thức hàng đầu nhất khi được hiển thị theo mặc định và tôi đã tự hỏi liệu có ai biết bất kỳ trường hợp nào khi bạn không muốn hộp thư hiển thị trên các cửa sổ khác không?Tại sao MessageBox không thuộc TopMost?
Tôi đã tìm thấy sự cố khi tôi bắt đầu hiển thị màn hình giật trong khi tải ứng dụng và có vẻ như chương trình của tôi vẫn đang chạy nhưng có một MessageBox
phía sau màn hình splash đang chờ nhập. trên một chủ đề khác với chuỗi được gọi là hộp thư vì vậy tôi cho rằng đây là lý do tại sao nó không xuất hiện phía trên vùng giật gân; nhưng điều này vẫn không giải thích tại sao MessageBox không có cờ MB_TOPMOST
theo mặc định?
Sửa
Để làm rõ hơn: cuối cùng tôi đã phải làm một cái gì đó tương tự như sau cuối cùng để thực hiện một bảng thông báo, mã không chính xác đúng như đã viết từ bộ nhớ)
[DllImport("User32.dll")]
private int extern MessageBox(windowhandle, message, caption, flag);
public static void MessageBox(windowhandle, string message, string caption)
{
MessageBox(windowhandle, message,caption, MB_TOPMOST);
}
Câu trả lời này sẽ rất tuyệt! nhưng tôi nghĩ rằng hộp thư bị chặn các cửa sổ không? – Sayse
Từ [diễn đàn msdn được đề cập trong câu trả lời] (http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/7a515f66-8818-4ec5-9213-7ee479f8fb18/) Tôi thấy rằng có một cái gì đó như 'hệ thống phương thức' và' phương thức ứng dụng'. Có thể tôi sẽ kiểm tra để biết thêm chi tiết về sau này .. –
Chỉ các hộp thông báo dạng thức bock các biểu mẫu của chúng, biểu mẫu 'thông thường' có thể vẫn tồn tại ngay cả sau khi bạn thoát khỏi chương trình đã sinh ra nó. – Tory