2013-10-07 2 views
0

Когда приложение запускается, заставка отображается из другого потока. Но в случае ошибки во время запуска - появится окно сообщения. Проблема в том, что при всплеске отображается сообщение. Я использовал свойство владельца IWin32Window, даже попытался использовать свойство MessageBoxOptions.DefaultDesktopOnly, но id не помог.MessageBox наверху со всех концов

Как я могу управлять этой ситуацией?

PS: Пытался создать невидимое окно, установить TopMost - и показать MessageBox. Не работал.

+1

Вы не должны использовать другой поток, чем пользовательский интерфейс, чтобы показать Windows (форма, MessageBox, SplashScreen и т.д.) –

+2

@SriramSakthivel: Это не универсально верно. Вы можете использовать отдельный поток для каждого окна. – Douglas

+0

@ Дуглас, который будет хорошим аргументом, но не реальностью! Я знаю, что окно имеет отношение 1> 1 к потоку, которое было создано, но вы не можете создать выделенный поток для каждого создаваемого окна. –

ответ

1

Я создал подобную ситуацию, используя многопоточность, и использовал этот код, чтобы MessageBox находился над окном. В основном этот код делает верхнюю часть окна сообщения.

MessageBox.Show(this, 
    "Your text", 
    "Settings Needed", 
    MessageBoxButtons.YesNo, 
    MessageBoxIcon.Question, 
    MessageBoxDefaultButton.Button1, 
    (MessageBoxOptions)0x40000); // this is MB_TOPMOST flag