所以我一直在寻找一段时间,但我找不到解决方案。
我的情况是我有一个表格,我希望在所有方面都有3像素的填充。然后,我想要一个停靠在窗体上的面板,并将该面板的背面颜色设置为窗体的透明度键(Lawn Green)。这会产生以下效果:
所以我找到了许多引用表格的解决方案" Click Through"但不是表格上的任何控件。所以第一个问题是:这可能吗?
如果是,那么我相信我可以修改制作表格的代码"点击通过"而是为小组工作。
以下是我到目前为止所获得的代码:
Public Enum GWL
ExStyle = -20
End Enum
Public Enum LWA
ColorKey = &H1
Alpha = &H2
End Enum
<DllImport("user32.dll", EntryPoint:="GetWindowLong")>
Public Shared Function GetWindowLong(hWnd As IntPtr, nIndex As GWL) As Integer
End Function
<DllImport("user32.dll", EntryPoint:="SetWindowLong")>
Public Shared Function SetWindowLong(hWnd As IntPtr, nIndex As GWL, dwNewLong As Integer) As Integer
End Function
<DllImport("user32.dll", EntryPoint:="SetLayeredWindowAttributes")>
Public Shared Function SetLayeredWindowAttributes(hWnd As IntPtr, crKey As Integer, alpha As Byte, dwFlags As LWA) As Boolean
End Function
Private Sub Me_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim MyLongOne As Integer = GetWindowLong(Me.Handle, GWL.ExStyle)
SetWindowLong(Me.Handle, GWL.ExStyle, MyLongOne Or &H80000 Or &H20)
SetLayeredWindowAttributes(Me.Handle, 0, 255, LWA.Alpha)
End Sub
正如您所看到的,此代码使用&#34; Me.Handle&#34;这仍然是引用表单本身。我需要更改什么才能使其成为表单上的面板?
我已将其更改为&#34; Me.Panel1.Handle&#34;但它不起作用。