|
2008/04/30(Wed) 00:38:28 編集(投稿者) 2008/04/30(Wed) 00:33:53 編集(投稿者)
H.K.R.と申します。 > リンク先などをコントロールさせない手段として,Formを表示するときにShowDialogを使ってなど考えています. System.Windows.Forms.Formのクライアント領域内に巨大な透明色の楕円を描画すると、 私の環境ではなぜか透明部分の背景に対してクリック等の操作ができなくなりました。 <追記> ↑すなわち、後ろ側のWebBrowserではなく、クライアント領域が透明になったFormがマウス入力を受け取る状態になる。 </追記> 詳しい理由は私にはわかりませんが、私の環境で上記の現象を発生させることのできたコードを掲載します。参考になれば幸いです。 ※ 私が試した環境:WindowsXPHomeSP2(画面のプロパティの「デザイン」タブでWindowsXPスタイルが選択された状態)、 VisualBasic2008ExpressEdition(対象Frameworkは、.NET Framework 2.0) Public Class Program <STAThread()> _ Public Shared Sub Main() Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Application.Run(New MyForm) End Sub End Class
' なぜか背景をクリックできないForm Public Class MyForm Inherits Form Public Sub New() Me.BackColor = SystemColors.Control Me.TransparencyKey = SystemColors.Control Me.Text = "背景をクリックできないForm" End Sub Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) Dim r0 As Rectangle = Me.ClientRectangle r0.Inflate(Me.Width, Me.Height) ' ↓巨大な透明色の楕円を描画すると、なぜか背景がクリックできなくなった。 e.Graphics.FillEllipse(SystemBrushes.Control, r0) ' ↓コメントを解除すると模様を描画する。 'Do While r0.Width >= 0 OrElse r0.Height >= 0 ' r0.Inflate(-20, -20) ' e.Graphics.FillEllipse(Brushes.Blue, r0) ' r0.Inflate(-20, -20) ' e.Graphics.FillEllipse(SystemBrushes.Control, r0) 'Loop MyBase.OnPaint(e) End Sub End Class
|