2014-02-09 6 views
1

У меня есть 2 кнопки радио, и я не могу проверить, какой из них называется:VB.NET Оператор = не определен

Ошибки я получаю «Оператор = для типа RadioButton и типа RadioButton не определен» ,

Это к югу, в котором возникает ошибка:

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 Then. sender - это тип Object и класс Object не имеет свойство Checked. Вы полагаетесь на позднюю привязку, и это не должно быть сделано, если это необходимо. Вы должны отличать sender как тип RadioButton, если вы хотите получить доступ к членам этого типа, а Option Strict On - это принудительно.

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_1 как boolean,

Просто используйте свойство .Checked из optSwitch_1 и sender получить, что значение и избежать этой ошибки.

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

Если вы имели в виду, чтобы сравнить 2 объекты ссылаются на равенство (чтобы проверить, если sender ссылки тот же экземпляр, как Me.optSwitch_1), попробуйте использовать метод .Equals() вместо:

Dim bSwitchChecked As Boolean = sender.Equals(Me.optSwitch_1) 
Смежные вопросы