vb.net - 用于启用和禁用点击槽形式的 Vb.Net 复选框
问题描述
我基本上有一个带有图片框的表单,它使用它作为游戏的最顶层覆盖来填充整个表单。所以我想要做的是添加一个复选框,让我 1. 点击表单和 2. 禁用点击表单。
我知道如何执行点击槽表单部分,但我不知道如何将其连接到复选框。此外,如果 clicktrough 表单处于活动状态,我将无法再禁用或启用复选框。是否有可能以某种方式解决这个问题?
代码:
Private Const WS_EX_TRANSPARENT As Integer = &H20
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or WS_EX_TRANSPARENT
Return cp
End Get
End Property
解决方案
我有一个带有 clic 槽功能的旧项目,有代码:
在一个模块中
Imports System.Runtime.InteropServices
Module Module1
Public m_InitialStyle As Integer
Public Enum GWL As Integer
ExStyle = -20
End Enum
Public Enum WS_EX As Integer
Transparent = &H20
Layered = &H80000
End Enum
<DllImport("user32.dll", EntryPoint:="SetWindowLong")>
Public Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As GWL, ByVal dsNewLong As WS_EX) As Integer
End Function
End Module
加载表单时:
m_InitialStyle = GetWindowLong(Me.Handle, GWL.ExStyle)
如何使用它 :
Private Sub VisibleToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VisibleToolStripMenuItem.Click
SetWindowLong(Me.Handle, GWL.ExStyle, m_InitialStyle Or WS_EX.Layered Or WS_EX.Transparent)
End Sub
Private Sub NormalToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NormalToolStripMenuItem.Click
SetWindowLong(Me.Handle, GWL.ExStyle, m_InitialStyle Or WS_EX.Layered)
End Sub
推荐阅读
- c# - 尽管文件存在 System.IO.FileNotFoundException 错误
- pandas - 使用 stack/unstack 重塑数据框
- c++ - 为什么 QCPColorMap 没有设置我的 QCPRange 值?
- javascript - 减少动态生成的表单字段
- c++ - 快捷键 ctrl-q 在 win32 中未处理
- python-sphinx - 是否有在模板中提供可配置目录(或更多可配置目录树)的 Sphinx 扩展?
- django-models - Django Rest 你应该为你的 api 使用什么序列化器?
- html - 将标题放在顶部,但不要放在内容之上。使内容位于标题下方
- postgresql - PostgreSQl 正确锁定新实体的创建
- python - 在所有 Django 应用程序启动后如何调用函数