2017-02-02 49 views
0

正如我的总结中所述,我目前正在使用VB.Net中的虚拟OS。我目前正在研究会话,因为我已完成登录的工作。在VB.NET按钮外观的复选框中更改了checked状态

我遇到了按钮外观复选框的问题。我想将CheckState设置为Checked,如果我用Click()这样的事件点击按钮:

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属性。

这段代码根本不起作用,如果我把CheckedChanged事件中的整个If-End If部分放到StackOverflowException中。我究竟做错了什么?

CheckBox是一个自定义控件b.t.w.

+0

尝试投发件人像btnApps:btnApps = E为.... – duDE

+0

这有什么代码的GOOL,因为按钮将保持未选中状态,并且没有办法输入Else语句 –

+0

我认为Checkbox的正常行为可以对您的代码执行任何操作,因此请取消激活代码并尝试 –

回答

1

如果您希望阻止复选框自动更改状态并使用自己的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 
+0

非常感谢!这是我正在寻找的答案! –