投稿者 Tさん  (社会人) 投稿日時 2023/12/15 12:48:40
.net Framework 4.8でWindowsフォームアプリを開発しているのですが、下記の事象が起きて困っております。

フォームを表示した状態から閉じるときにCloseをCancelし、
WindowStateをMinimized
ShowInTaskbarをFalse
Formを.Hide
としてバックグラウンドで稼働させたままにしています。

その後、タスクバーなどから再度フォーム表示させるために
WindowStateをNormal
ShowInTaskbarをTrue
Formを.Show
として表示しています。

その後、同フォームの処理で
WindowsFormsApplicationBase.OpenForms
で開いているフォームを取得すると
フォームが開いているにも関わらず
OpenForms内のフォームがない状態になります。
(OpenForms.Count=0)

確認したところ
ShowInTaskbar=True
の処理の前はOpenForms内には開いてるFormが入っており、
処理後にOpenForms内が空になっています。
何故か、ShowInTaskbar=Trueのあとに
Form.Hideをしたあと
Form.Showすると
その時ShowしたFormはOpenForms内に入ります。
(その他のフォームが開いていた場合でもShowしたFormのみがOpenForms内に入ります。
現状、フォーム(Form1)内にフォーム(Form2)を表示しており上記処理ではForm1のみOpenForms内に入ります。)

原因、解決策、対策わかる方おりますでしょうか?

ド素人のため、いろいろ調べましたが原因等が見つかりませんでした。
よろしくお願いします。