2017-02-02 70 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

非常感謝!這是我正在尋找的答案! –