■No35113に返信(よっし〜さんの記事)
> 現在も親の上に半透明シート(?)を表示させ、その上にLabelを配置したフォームを表示させております。
半透明シートを被せて、下の親フォームを操作不能にしたいという意図でしょうか。
であれば、親フォームにフォームサイズの Panel を全体表示しておき、
その Panel の背景に、親フォームの内容を描画してはどうでしょう。
(1) 親フォームに Panel1 を配置。これが半透明モドキになる。
Panel1 は普段、Visible = False にしておく。
(2) その Panel1 内に、子コントロールとして黄色の Panel2 を置き、
Panel2 内に Label1 や Button1 を置く。
Button1_Click のイベントにて「Panel1.Hide()」を記述。
(3) 半透明表示のために、以下を実行。
'Panel1 は Visible = False な状態で開始する事
Panel1.Visible = False
Dim cr = Me.ClientRectangle
Dim r = Me.RectangleToScreen(cr)
Dim bmp As New Bitmap(cr.Width, cr.Height)
Using g = Graphics.FromImage(bmp)
'画面キャプチャ
g.CopyFromScreen(r.Location, New Point(0, 0), r.Size)
'半透明のスモークをかける
Using b As New SolidBrush(Color.FromArgb(180, Color.DarkSlateGray))
g.FillRectangle(b, cr)
End Using
End Using
'Panel1を重ねて表示
Dim oldBmp = Panel1.BackgroundImage
Panel1.BackgroundImage = bmp
If oldBmp IsNot Nothing Then
oldBmp.Dispose()
End If
Panel1.BringToFront()
Panel1.SetBounds(cr.X, cr.Y, cr.Width, cr.Height)
Panel1.Visible = True