Если еще заявление в VB - PullRequest
       2

Если еще заявление в VB

0 голосов
/ 16 января 2012

У меня есть кнопка, и я хочу, чтобы она проверила состояние для отображения другого сообщения.

Ниже мой код:

 Dim a As String = "";

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If ((a = "a") & (DetailsSelectedComment.Visible = True)) Then
        MsgBox("Have")
    Else
        MsgBox("No have")
    End If

End Sub

Но я получил следующую ошибку, когда нажал на кнопку.

"Входная строка была в неправильном формате."

Ответы [ 6 ]

1 голос
/ 16 января 2012

Я не эксперт по VB - но я думаю, что это из-за

If ((a = "a") & (DetailsSelectedComment.Visible = True))

Заменить & на And.

См. & Оператор в VB - это оператор конкатенации строк, а не логическая операция.

0 голосов
/ 19 марта 2012

В вашем коде есть несколько ошибок, и, к сожалению, во всех ответах пока не упоминается хотя бы один из этих аспектов.

  1. В VB операторы не разделяются точкой с запятой.

  2. & - оператор конкатенации строк.Чтобы проверить соединения, используйте AndAlso.Для проверки дизъюнкций используйте OrElse.На самом деле, даже в C #, & здесь будет неправильным, поскольку это поразрядно и , но вы хотите логическое соединение, которое в C # равно &&.

  3. Не сравнивайте логическое значение с буквальным True или False, это бессмысленная операция.Просто напишите / протестируйте логическое значение напрямую.

  4. Не используйте избыточные скобки вокруг ваших условий ... чрезмерно вложенные выражения в скобках затрудняют чтение кода.

  5. Если вы объявляете переменную на уровне класса, используйте Private вместо Dim.

  6. Всегда, всегда включите Option Strict On в вашем проектенастройки.

Что оставляет нас с:

Private a As String = ""

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If a = "a" AndAlso DetailsSelectedComment.Visible Then
        MsgBox("Have")
    Else
        MsgBox("No have")
    End If
End Sub
0 голосов
/ 19 марта 2012
Dim a As String = ""

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If ((a = "a") ANDALSO (DetailsSelectedComment.Visible = True)) Then
        MsgBox("Have")
    Else
        MsgBox("No have")
    End If
End Sub

оператор & не является двоичным логическим оператором, только для конкатенации строк.Вы можете использовать AND или ANDALSO (ANDALSO прервет оператор, если первое условие ложно, несмотря на то, что проверяет второе условие, если первое условие ложно)

0 голосов
/ 16 января 2012
  1. Точка с запятой ";"в Dim a As String = ""; необходимо удалить.
  2. & в VB.net используется для объединения не как логический побитовый оператор.

Изменить

If ((a = "a") & (DetailsSelectedComment.Visible = True)) Then

на

If ((a = "a") And (DetailsSelectedComment.Visible = True)) Then

0 голосов
/ 16 января 2012

Вы должны использовать AND оператор. & используется для объединения в VBnet.

Dim a As String = ""

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If ((a = "a") AND (DetailsSelectedComment.Visible = True)) Then
        MsgBox("Have")
    Else
        MsgBox("No have")
    End If
End Sub
0 голосов
/ 16 января 2012

Сначала удалите ";" из вашего кода при объявлении переменной "a" Dim a As String = ""; до Dim a As String = ""

А для выполнения и операций в VB.Net мы должны использовать И и ANDALSO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...