この動作を再現するには、次のプロパティを持つポップアップ フォームを作成する必要があります。
(1) ShowInTaskBar = False
(2) Show メソッドでフォームを表示し、フォームが表示されなくなるまでループします。
(3) マウスがクリックされたときにフォームを閉じるには、OnDeactivate をオーバーライドし、visible を False に設定します。
次に、ボタンがクリックされたときにポップアップを表示する別のフォームを作成します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Syste
Using pop As New PopUp
pop.Visible = True
Do While pop.Visible
Application.DoEvents()
NativeMethods.MsgWaitForMultipleObjectsEx(0, IntPtr.Zero, 250, &HFF, 4)
Loop
Me.Activate()
End Using
End Sub
プロジェクトを開始し、フォームを画面全体に拡大し、ボタンをクリックしてポップアップを開きます。次に、元のフォームの任意の場所をクリックして戻します。必ずというわけではありませんが、ほとんどの場合、元のフォームが一瞬消えてから再び現れるため、ちらつき効果が生じます。
Reflector と System.Windows.Forms.Design.DropDownHolder を掘り下げると、ちらつきの問題を解決する CreateParams で次のことがわかりました。
createParams.Style = (createParams.Style Or -2139095040)
残念ながら、フォームの周りに黒い境界線も表示されます。(これを表示するには、FormBorderStyle = System.Windows.Forms.FormBorderStyle.None を設定する必要があります。)
フォームの周りに黒い境界線を配置すること以外に、このスタイルが何をするか知っている人はいますか?
番号と16進数でGoogleを検索しましたが、何も見つかりません。
ありがとう。
ETA: pinvoke.netでスタイル定数のリストを見てきましたが、私は賢くありません。