Что вы можете попробовать сделать, чтобы увидеть, действительно ли есть ошибка в коде или просто простая логическая ошибка, так это вставить несколько разрывов после каждого блока кода.
Что я мог видеть, так это то, что когда вы установили гандикап переключателя и дополнительно проверили повторение переключателя, код вычислит значение * 2, но после закрытия оператора if then он снова запишет в текстовое поле из lblTotal, создавая впечатление, что он не рассчитывается.
Я предполагаю, конечно, что у вас есть как минимум две группы, позволяющие одновременно проверять более одного переключателя.
Я бы предложил следующее исправление:
If radRepeat.Checked Then
intTotal = CStr(2 * CDbl(intTotal.ToString("C")))
End If
Таким образом, ваш вывод будет работать для всех предыдущих операторов if/then.
Редактировать: я понимаю, что это, по сути, было освещено комментарием выше меня и немного подчищено.
Если бы это был я, я бы настроил все немного по-другому и избавился бы от нажатий клавиш, в том смысле, что если вы просто вычисляете с использованием целых чисел, подождите, пока строка вывода не выполнит какое-либо преобразование в строку, двойное число или что бы то ни было.
Это будет выглядеть примерно так:
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(Variables) были правильно введены.
person
Brett Reinhard
schedule
03.11.2015
CDbl(intTotal.ToString("C"))
... вы берете целое число, преобразуете его в строку, а затем снова анализируете его, чтобы оно удвоилось. Зачем ты это делаешь? Это не имеет смысла. - person Heinzi   schedule 03.11.2015lblTotal.Text
установит текст этой метки. - person David   schedule 03.11.2015