首页 > 解决方案 > 用于启用和禁用点击槽形式的 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

标签: vb.netformsclick

解决方案


我有一个带有 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


推荐阅读