Что вы может попытаться сделать, чтобы увидеть, действительно ли ошибка с кодом или просто простая логическая ошибка вставляет несколько разрывов после каждого блока кода.
Что я мог бы увидеть, так это то, что когда у вас установлен гандикап радиокнопки, и, кроме того, повторен флажок переключателя, код будет вычислять значение * 2, но после того, как оператор if будет закрыт, он снова напишет в текстовое поле lblTotal, создавая впечатление, будто он не вычисляет.
Я предполагаю, что у вас есть как минимум две группы, позволяющие одновременно проверять более одного переключателя.
Я хотел бы предложить следующее исправление:
If radRepeat.Checked Then
intTotal = CStr(2 * CDbl(intTotal.ToString("C")))
End If
Таким образом, ваш выход будет работать для всех предыдущих если/тогда заявления.
Редактировать: Я понимаю, что это по существу было покрыто комментарием выше меня и немного почищено.
Если бы это был я, я бы немного поменял вещи и пощадил бы мои нажатия клавиш, в том смысле, что если вы просто вычисляете с помощью целых чисел, дождитесь, пока линия вывода не будет конвертировать в строку, двойную или любую другую случай может быть.
Это будет выглядеть примерно так:
If radMeter.Checked Then
intTotal = intMeter
ElseIf radZone.Checked Then
intTotal = intParking
ElseIf radBlocking.Checked Then
intTotal = intDriveway
ElseIf radHandicap.Checked Then
intTotal = intHandicap
If radRepeat.Checked Then
intTotal = (2 * intTotal)
End If
End If
'Output
lblTotal.Text = intTotal.ToString("C")
Конечно, это при условии, что эти Int (переменные) были введены правильно.
'CDbl (intTotal.ToString (" C "))' ... вы берете целое число, преобразуете его в строку и затем снова разбираете, чтобы удвоить. Зачем ты это делаешь? Это не имеет смысла. – Heinzi
Как именно это происходит? Когда вы проходите через это в отладчике, где это происходит неправильно? Каковы значения времени выполнения, когда это происходит? Установка значения 'lblTotal.Text' будет устанавливать текст этой метки. – David