在 VB.NET 中更改了带有按钮外观的复选框的选中状态

Changed checked state on checkbox with button appearance in VB.NET

如我的摘要所述,我目前正在 VB.Net 中开发虚拟 OS。我目前正在处理会话,因为我已经完成了登录工作。

我在使用带有按钮外观的复选框时遇到问题。如果我点击带有 Click() 事件的按钮,我想将 CheckState 设置为 Checked,如下所示:

    Private Sub btnApps_Click(Byval sender As Object, Byval e As EventArgs) Handles btnApps.Click()
       If btnApps.CheckState = CheckState.Checked Then
          btnApps.CheckState = CheckState.Unchecked
       Else
          btnApps.CheckState = CheckState.Checked
       End If
    End Sub

我也尝试了 Checked 属性。

此代码根本不起作用,如果我将整个 If-End If 部分放入 CheckedChanged 事件中,我将收到 WhosebugException。我做错了什么?

CheckBox 是自定义控件b.t.w。

如果您想阻止您的复选框自动更改状态并使用您自己的 Click 事件更改外观,您可以将 AutoCheck 设置为 false。

https://msdn.microsoft.com/en-us/library/system.windows.forms.checkbox.autocheck(v=vs.110).aspx

通过这个问题找到的信息:How to cancel RadioButton or CheckBox checked change

Public Class Form1
Private WithEvents btnApps As New clsChk

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    btnApps.AutoCheck = False
    Me.Controls.Add(btnApps)
End Sub

Private Sub btnApps_Click(sender As Object, e As EventArgs) Handles btnApps.Click
    Debug.WriteLine(btnApps.CheckState)
    If btnApps.CheckState = CheckState.Checked Then
        btnApps.CheckState = CheckState.Unchecked
    Else
        btnApps.CheckState = CheckState.Checked
    End If
End Sub
End Class