Недавно я узнал, что по умолчанию MessageBoxes не были самой верхней формой при отображении по умолчанию, и мне было интересно, если кто-нибудь знает какие-либо обстоятельства, когда вы не хотите, чтобы окно сообщений отображалось поверх других окон?Почему не MessageBox TopMost?
Обнаружена проблема, когда я начал показывать заставки при загрузке приложения, и это выглядело так, как будто моя программа все еще работала, но за заставкой, ожидавшей ввода, стоял MessageBox
. Появился экран заставки на другой поток в поток, который вызвал ящик сообщений, поэтому я думаю, что именно поэтому он не появился над всплеском; но это все еще не объясняет, почему MessageBox по умолчанию не имеет флага MB_TOPMOST
?
Редактировать
Чтобы лучше прояснить: в конце концов, я должен был сделать что-то похожее на это, в конце концов, чтобы сделать MessageBox, код не совсем правильно, как писал по памяти)
[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);
}
Этот ответ выглядит великолепно! но я думал, что в любом случае блокировки окон заблокированы? – Sayse
Из форума [msdn, упомянутого в ответе] (http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/7a515f66-8818-4ec5-9213-7ee479f8fb18/) Я обнаружил, что есть что-то вроде 'system modal' и' application modal'. Может быть, я еще раз позабочусь об этом подробнее. –
Только модальные окна сообщений образуют свои формы, а «обычный» все равно сохраняется даже после выхода из программы, которая породила его. – Tory