プログラム起動中周りを灰色に・・(例・・ユーザーアカウント制御などのように)
投稿者 葉月  (社会人)
投稿日時
2010/5/8 11:18:13
初めまして。
Form1を背景として利用し、
Form2に主処理を行わせます。
動きは、サンプルのコメントを参考にしてください。
Form1の色は、デザイン画面のBackColorプロパティを変更します。
サンプルを載せますので、以下のことを行ってください。
・Timer1個を貼り付け
・Form2の作成
>>>サンプル
Form1を背景として利用し、
Form2に主処理を行わせます。
動きは、サンプルのコメントを参考にしてください。
Form1の色は、デザイン画面のBackColorプロパティを変更します。
サンプルを載せますので、以下のことを行ってください。
・Timer1個を貼り付け
・Form2の作成
>>>サンプル
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' フォーム半透明
Me.Opacity = 0.83
' タイトルバー消す。
Me.FormBorderStyle = FormBorderStyle.None
' フォーム最大化
Me.WindowState = FormWindowState.Maximized
Using f2 As Form = New Form2()
f2.ShowDialog(Me)
End Using
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Close()
End Sub
End Class
投稿者 ppo  (小学生)
投稿日時
2010/5/8 14:03:11
わかりやすい説明ありがとうございました
参考になりました
参考になりました
投稿者 るきお  (社会人)
投稿日時
2010/5/8 19:51:27
こんにちは。
Opacityを使うアイディアいいですね!
このアイディアを使って、もうちょっと使いやすく改造してみました。
Form1だけでOKで、別途Formを用意する必要はありません。
このプログラムを新規プログラムに貼り付けてもそのまま使えます。
ただし、モードを切り替えるためにButton1とButton2の2つのボタンは配置されている前提です。
Opacityを使うアイディアいいですね!
このアイディアを使って、もうちょっと使いやすく改造してみました。
Form1だけでOKで、別途Formを用意する必要はありません。
このプログラムを新規プログラムに貼り付けてもそのまま使えます。
ただし、モードを切り替えるためにButton1とButton2の2つのボタンは配置されている前提です。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'一人モード
MeAloneOn()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal 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
投稿者 葉月  (社会人)
投稿日時
2010/5/8 21:55:42
こんばんは。
Formを新規に作る必要がなかったんですね。
Me.TagにDispose予定の透過されたFormを格納しておき、
必要がなくなったらTagを参考に掃除する部分が勉強になりました。
汎用性があり、とても参考になります。
ありがとうございました。
Formを新規に作る必要がなかったんですね。
Me.TagにDispose予定の透過されたFormを格納しておき、
必要がなくなったらTagを参考に掃除する部分が勉強になりました。
汎用性があり、とても参考になります。
ありがとうございました。
投稿者 るきお  (社会人)
投稿日時
2010/5/9 00:37:19
意味的にはあまりTagプロパティに入れないほうがいいんだと思いますが、
質問者のppoさんが小学生ということと、プログラムにまだあまりなじまれていない雰囲気だったので、
「Form用に変数を1つ用意する」という前提を省いて負担を軽くするために使いました。
と言いつつ、私はTagプロパティが結構好きでちょこちょこ使ってます。
質問者のppoさんが小学生ということと、プログラムにまだあまりなじまれていない雰囲気だったので、
「Form用に変数を1つ用意する」という前提を省いて負担を軽くするために使いました。
と言いつつ、私はTagプロパティが結構好きでちょこちょこ使ってます。
投稿者 葉月  (社会人)
投稿日時
2010/5/9 15:48:38
私が作るのは、趣味の小規模ツールが多いので、Tagを使う機会はありそう
です。
ただ、他人と作る場合やコードが長くなった場合は、流れが読みにくい印
象を受けました。
です。
ただ、他人と作る場合やコードが長くなった場合は、流れが読みにくい印
象を受けました。
どうか方法を教えてください