Это не должно представлять никаких проблем. Следующий код (C #, извините за это, нет среды VB.NET, где я сейчас нахожусь) устанавливает TopMost
в true
, ждет 5 секунд, а затем переключает TopMost
обратно в false
.
private void MakeMeTopmostForAWhile()
{
this.TopMost = true;
ThreadPool.QueueUserWorkItem(state =>
{
Thread.Sleep(5000);
this.Invoke((Action)delegate { this.TopMost = false; });
});
}
Обратите внимание, что это не влияет на Z-порядок окна сразу; когда TopMost
установлен на false
, окно все равно будет поверх других окон. Если окно находится поверх другого окна, которое также является самым верхним, оно будет перемещаться так, чтобы другое самое верхнее окно не закрывалось, но оно оставалось поверх других не верхних окон.
Обновление
Вот приведенный выше код в VB.NET ( с автоматическим преобразованием , не тестировался):
Private Sub MakeMeTopmostForAWhile()
Me.TopMost = True
ThreadPool.QueueUserWorkItem(Function(state) Do
Thread.Sleep(5000)
Me.Invoke(DirectCast(Function() Do
Me.TopMost = False
End Function, Action))
End Function)
End Sub