前提
VB.NETで作ってるアプリケーションを「.test」という拡張子に関連付けてファイルをダブルクリックしてアプリケーションを起動したときにアプリケーションの子ウィンドウにはダブルクリックしたファイルの内容がアプリケーションの子ウィンドウに表示される。
実現したいこと
「.test」という拡張子のファイルをダブルクリックしてアプリケーションを起動したときにアプリケーションの子ウィンドウにはダブルクリックしたファイルの内容がアプリケーションの子ウィンドウに表示されるが、その時に親ウィンドウは背面に、ファイルがあるディレクトリは中間で、ファイルの内容を表示する子ウィンドウは一番前面に表示したい。
発生している問題・エラーメッセージ
子ウィンドウのTopMostプロパティにTrueを設定すると一番前面に表示されるが、常に前面に表示されてて他のウィンドウの後ろに隠す事ができなくなる。
希望としてはマウス等で操作したときに、他のウィンドウの後ろに隠れるようにしたいので、TopMostをTrueにした直後にTopMostにFalseを設定したが、「.test」という拡張子のファイルをダブルクリックして子ウィンドウの内容を変更したときに、親ウィンドウが前面に出て子ウィンドウが親ウィンドウの背面に隠れる。
TopMostは使わずに子ウィンドウのBringToFront()を呼び出してみたが、子ウィンドウが背面で親ウィンドウが前面になってしまう。
該当のソースコード
vb.net
1'ファイルApplicationEvents.vbのソース 2Imports System 3Imports System.IO 4Imports System.Text 5 6Namespace My 7 Partial Friend Class MyApplication 8 9 Private Sub MyApplication_StartupNextInstance(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs) Handles Me.StartupNextInstance 10 11 Dim FilePath As String = e.CommandLine(0) 12 Dim sr As New StreamReader(FilePath, Encoding.UTF8) 13 Dim text As String = sr.ReadToEnd() 14 15 Form1.f2.Label1.Text = text 16 Form1.f2.Show() 17 Form1.f2.BringToFront() 18 'Form1.f2.TopMost = True 19 'Form1.f2.TopMost = False 20 21 End Sub 22 23 End Class 24End Namespace
vb.net
1'ファイルForm1.vbのソース 2Public Class Form1 3 Public f2 As New Form2() 4 5 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 6 f2.Show() 7 End Sub 8End Class
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
使っているPCのOS Windows10
使っているIDE Microsoft Visual Studio Community 2019
ターゲットフレームワーク .NET Framework 4.7.2
回答1件