投稿者 るきお  (社会人) 投稿日時 2010/5/8 19:51:27
こんにちは。
Opacityを使うアイディアいいですね!

このアイディアを使って、もうちょっと使いやすく改造してみました。

Form1だけでOKで、別途Formを用意する必要はありません。
このプログラムを新規プログラムに貼り付けてもそのまま使えます。

ただし、モードを切り替えるためにButton1とButton2の2つのボタンは配置されている前提です。

    
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        '一人モード 
        MeAloneOn()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button2.Click
        '通常モード 
        MeAloneOff()
    End Sub


    ''' <summary> 
    ''' 自分のフォーム以外を黒くして触れなくする。 
    ''' この状態を解除するにはMeAloneOffを呼び出す。 
    ''' </summary> 
    Private Sub MeAloneOn()

        Dim backForm As New Form

        ' フォームを黒で半透明に。 
        backForm.BackColor = Color.Black
        backForm.Opacity = 0.83
        ' タイトルバー消す。  
        backForm.FormBorderStyle = FormBorderStyle.None
        ' フォーム最大化  
        backForm.WindowState = FormWindowState.Maximized

        Me.Tag = backForm
        backForm.Show()
        Me.TopMost = True
       
    End Sub

    ''' <summary>通常モードに戻す</summary> 
    Private Sub MeAloneOff()

        Dim backForm As Form

        backForm = CType(Me.Tag, Form)
        backForm.Close()
        backForm.Dispose()
        Me.Tag = Nothing
        Me.TopMost = False

    End Sub