投稿者 るきお  (社会人) 投稿日時 2023/12/16 09:40:44
実際にどのようにプログラムしているか教えてください。
投稿内容をヒントに試しに下記のようなプログラムを作ってみましたが、おっしゃるような現象は起きていないように見えます。

このプログラムは Form2を非表示にして、3秒後にForm2を再表示して、My.Application.OpenForms を調べてそのForm2が含まれていることを確認できました。
実際に試すにはForm1で、Button1をクリックして、Form2を表示した後、Form2を右上の×ボタンで閉じて、3秒待ってください。
Debug.WriteLineで出力したメッセージは 出力ウィンドウで確認できます。
https://www.umayadia.com/Note/Note021DebugWriteLine.htm

私の環境(Windows 11 + VB + .NET Framework 4.8)で実行すると次のように出力されました。

ShowInTaskbar = Trueより前 OpenFroms内にありません。
ShowInTaskbar = Trueより後 OpenFroms内にあります。
2

Form1側
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim f As New Form2
        f.Show()

    End Sub

End Class


Form2側
Public Class Form2

    Private Async Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing

        e.Cancel = True
        Me.WindowState = FormWindowState.Minimized
        Me.ShowInTaskbar = False
        Me.Hide()

        Await Task.Delay(3000)

        Me.WindowState = FormWindowState.Normal

        If My.Application.OpenForms.OfType(Of Form).Contains(MeThen
            Debug.WriteLine("ShowInTaskbar = Trueより前 OpenFroms内にあります。")
        Else
            Debug.WriteLine("ShowInTaskbar = Trueより前 OpenFroms内にありません。")
        End If

        Me.ShowInTaskbar = True
        Me.Show()

        If My.Application.OpenForms.OfType(Of Form).Contains(MeThen
            Debug.WriteLine("ShowInTaskbar = Trueより後 OpenFroms内にあります。")
        Else
            Debug.WriteLine("ShowInTaskbar = Trueより後 OpenFroms内にありません。")
        End If

        Debug.WriteLine(My.Application.OpenForms.Count)
    End Sub
End Class