2008-10-10 4 views
14

Я пишу приложения Windows Forms в C# .NETокно приложения послал за другими окнами на закрытие другого потока (C#)

При запуске, программа выводит на экран заставку, которая работает в отдельном потоке. Пока отображается экран заставки, основное приложение инициализируется.

После того, как основное приложение завершило инициализацию, отобразится основная форма приложения, и заставка по-прежнему отображается сверху.

Все до сих пор, как и ожидалось.

Затем экран заставки закрыт, что приводит к выходу потока. По какой-то причине в данный момент основные окна приложений отправляются за всеми остальными открытыми окнами, в частности в окне проводника Windows, где вы щелкнули файл .exe, чтобы запустить приложение в первую очередь!

Что может заставлять окна внезапно прыгать «за» так?

ответ

10

Попробуйте вызвать .Activate() в главном окне, когда ваш поток закрывается.

Он никогда не был активным и, следовательно, имел низкий Z-порядок, поэтому все выше будет, естественно, над ним. Я должен был исправить этот точный сценарий в нашем приложении.

Не забывайте! Возможно, вам понадобится маршалировать вызов к правильной теме, используя Invoke()!

1

У меня это случалось и порой. Ответ Боба самый легкий и работает для меня в большинстве случаев. Однако были случаи, когда мне нужно было использовать грубую силу. Сделайте это через interop следующим образом:

[DllImport ("user32.dll")] public static extern bool SetForegroundWindow (IntPtr hWnd);

0

Является ли экран заставки Модальным диалогом?

Я видел это окно «прыгает», если вы дважды увольняете диалог Modal, устанавливая оба DialogResult и вызывая Hide() или close().

код так:

private void button1_Click(object sender, System.EventArgs e) 
{ 
    this.DialogResult = DialogResult.Abort; 
    this.Hide(); 
} 

См this запись в блоге для всех случаев ...

-2

Вы можете использовать такой код:

private void button1_Click(object sender, System.EventArgs e) 
{ 
    this.DialogResult = DialogResult.Abort; 
    this.Hide(); 
} 

Спасибо всем!

+0

Повторение фрагмента кода человека через год после того, как они были опубликованы, не помогает читателю. – 2015-07-14 07:55:50