2014-02-09 20 views
1

我有2個單選按鈕,我不能檢查哪一個被稱爲:VB.NET算=未定義

我正的誤差爲「操作員=類型單選按鈕和類型沒有定義單選按鈕」 。

這其中引發錯誤子:

Private Sub optSwitch_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles optSwitch_1.CheckedChanged, optSwitch_0.CheckedChanged 

    If sender.Checked Then 

     If isInitializingComponent Then 
      Exit Sub 
     End If 

     Dim bSwitchChecked As Boolean = sender = Me.optSwitch_1 'here the error is raised 

     Me.btnSwitchConfig.Enabled = bSwitchChecked 
    End If 

End Sub 

回答

1

=是值相等。引用相等由Is運算符決定:Dim bSwitchChecked As Boolean = (sender Is Me.optSwitch_1)

順便說一下,您應該關閉Option Strict On,因爲您不應該這樣做:If sender.Checked Thensender是Object類型,而Object類沒有Checked屬性。你依靠遲綁定,除非需要,否則不應該完成。如果要訪問該類型的成員,並且Option Strict On將強制執行該操作,則應該將sender作爲RadioButton類型進行投射。

0

你應該把選項嚴格從項目設置,以避免運行時鑄造的問題。 造成問題的線路沒有任何意義。

也許這個代碼將幫助您:

If CType(sender, RadioButton).Name.Equals(Me.optSwitch_1).Name AndAlso Not isInitializingComponent Then 
Me.btnSwitchConfig.Enabled = sender.Checked 
Else 
' Add else because otherwise enabled state will always stay true. 
Me.btnSwitchConfig.Enabled = False 
End If 
0

我相信,你想要得到的sender價值和optSwitch_1boolean

只需使用屬性的optSwitch_1.Checkedsender吃出值並避免該錯誤。

Private Sub optSwitch_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged 
     If sender.Checked Then 

      Dim bSwitchChecked As Boolean = 
sender.Checked = Me.optSwitch_1.Checked 'here the error is raised 

     End If 
    End Sub 
0

如果你的意思是比較兩個對象引用相等(檢查是否sender引用相同的實例爲Me.optSwitch_1),儘量用.Equals()方法來代替:

Dim bSwitchChecked As Boolean = sender.Equals(Me.optSwitch_1) 
相關問題