일정 기간 동안 맨 위에 있어야하는 양식이 있고 다른 창 뒤에 정상적으로 설정할 수 있습니다. 수행해야 할 Me.TopMost
~ True
또는 False
을 설정하는 것 외에 어떤 것이 있습니까? 작동하지 않는 것 같아서 묻습니다.VB.NET에서 TopMost 토글
답변
문제가 없어야합니다. 다음 코드 (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에서 위의 코드 (auto-converted는 테스트하지)입니다 : 어떤 방법으로
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
TopMost를 true로 설정하면 즉시 Z 순서에 영향을 줍니까? 그것이 정상으로 곧장 가야한다는 의미인가? – Shawn
@ShawN : 적어도 맨 위가 아닌 창 앞에 이동해야합니다. 나는 그것이 다른 최상위 창들 앞에서 자동으로 움직일 것이라고 추측하지는 않는다. 만약 당신이 그것을 강요하고 싶다면'Me.BringToFront()'를 부를 수있다. –
@Shawn : 빠른 테스트를했는데,'TopMost = True'를 설정하면 창문이 앞쪽으로 움직이게되고, 이미 맨 위에있는 다른 창들 앞쪽으로 움직이게됩니다. false로 설정하면 맨 위의 창을 덮지 않을만큼 충분히 뒤로 이동하는 것처럼 보입니다. –
이 작동하지이 나타 납니까? –