※ ChatGPTを利用し、要約された質問です(原文:フォームを最前面に表示したいです。)
VB.NET、WinXPでフォームを最前面に表示する方法
このQ&Aのポイント
Visual Basic .NETとWindows XPを使用して、フォームを最前面に表示する方法について質問があります。フォーム内のボタンを押すと指定のフォルダを開き、その後に再度フォームを最前面に表示したいですが、コードを実行するとフォルムがアクティブにならずに終了してしまいます。
現在、フォルダを開くためにはSystem.Diagnostics.Process.Startメソッドを使用していますが、フォルダを開くためには少し時間がかかります。そのため、適切な処理時間が経過した後にフォームを最前面に表示する方法を知りたいです。
いくつかの試みをしてみましたが、うまくいきませんでした。CreateObjectメソッドやMe.Focusメソッドを使用してみたり、フォルダを開くコードを置き換えてみたりしましたが、期待した動作が得られませんでした。ご教示頂ければ幸いです。
VB.NET、WinXPなのですが、
form1のボタンを押して、指定のフォルダを開いた後に
再度そのボタンのあるform1を最前面に表示したいのですが、
System.Diagnostics.Process.Start("C:\WINDOWS")
Me.Activate()
などとしてファイルがたくさんあるフォルダを開くと完了まで時間がかかり
次のMe.Activate()の命令が無視されてしまうようで
form1がアクティブにならないまま終わってしまいます。
少し待機しようと
System.Diagnostics.Process.Start("C:\WINDOWS")
System.Threading.Thread.Sleep(500)
Me.Activate()
とすると正常に開くのですが、ファイルが少なくても
高速なマシンでも一律0.5秒停止してしまうのではなく、
表示が完了されているかどうかを判定するようにしたいのですが、
Dim P As Object
P = CreateObject("Shell.application")
P.open("c:\windows")
Do While P.Busy = True : Loop
などのように待機する方法があったら教えて頂きたいです。↑はエラーになってしまいました。
フォルダを開くコードを
CreateObject("Shell.Application").Open("C:\WINDOWS")
に置き換えてみたり、
Me.Focus()やMe.show()
などを試してみたのですが、うまくいきませんでした。
毎回申し訳ありませんが、よろしくお願いいたします。
お礼
お返事ありがとうございます。 早速こちらの方法でやってみることにします。