■96116 / ) |
Re[1]: BringToFrontを最後に更新する方法 |
□投稿者/ KOZ (140回)-(2020/10/22(Thu) 09:27:53)
|
■No96106 (雀 さん) に返信
> ウインドウを順番に .BringToFront()を設定していく必要があります。
> ウインドウの数が多いと、画面がちかちかして時間がかかってしまいます。
だからこそ、並びの順に下から作成するのがベストだと書いたのですが・・・
一応、こんな感じで抑制できそうです。
<DllImport("user32.dll")>
Private Shared Function LockWindowUpdate(ByVal hWndLock As IntPtr) As Boolean
End Function
Private Enum ShowWindowCommands
SW_HIDE = 0
SW_SHOWNORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWMAXIMIZED = 3
SW_MAXIMIZE = 3
SW_SHOWNOACTIVATE = 4
SW_SHOW = 5
SW_MINIMIZE = 6
SW_SHOWMINNOACTIVE = 7
SW_SHOWNA = 8
SW_RESTORE = 9
SW_SHOWDEFAULT = 10
SW_FORCEMINIMIZE = 11
End Enum
<DllImport("user32.dll")>
Private Shared Function ShowWindow(hWnd As IntPtr, <MarshalAs(UnmanagedType.I4)> nCmdShow As ShowWindowCommands) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
If Me.MdiChildren.Count > 0 Then
Dim mc As MdiClient = Me.MdiChildren(0).Parent
LockWindowUpdate(mc.Handle)
ShowWindow(mc.Handle, ShowWindowCommands.SW_HIDE)
'
' 並び替えの処理
'
ShowWindow(mc.Handle, ShowWindowCommands.SW_SHOW)
LockWindowUpdate(IntPtr.Zero)
End If
End Sub
|
|