Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Получение значения типа Double из TextBox

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

ServanteS87



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Подскажите пожалуйста, как правильно преобразовать данные из TextBox в тип Double?
Пусть условно есть три текст бокса: Тариф на водоснабжение, размер НДС, и сумма НДС.
Установил на процедуру ввода значения в "Тариф на водоснабжение" следующее:

Код:
rtwtrspplndstxtbx.Text = Convert.ToDouble(rtwtrsppltxtbx.Text) * (Convert.ToInt32(ndstxtbx) / 100)

VS2010 ничего не подчеркивает, ни на что не ругается, но при вводе цифрового значения в "Тариф на водоснабжение" выдает ошибку "Входная строка имела неверный формат". В прочем, при вводе буквы выдает ту-же ошибку.

Всего записей: 6 | Зарегистр. 26-06-2011 | Отправлено: 03:31 03-05-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ServanteS87
http://msdn.microsoft.com/ru-ru/library/994c0zb1(v=vs.110).aspx

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:48 03-05-2014
ServanteS87



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, вижу, что что-то толковое по ссылке. Но мне студенту, впервые столкнувшемуся с дотнетом не дано быстро понять что там? Может подскажете быдлокодеру что делать? Или это займет много времени?

Всего записей: 6 | Зарегистр. 26-06-2011 | Отправлено: 04:02 03-05-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ServanteS87
ну там же примеры есть, в зависимости от языка, который вы не указали.
этот метод идет с проверкой возможности преобразования.
либо использовать try catch блоки.
 

Цитата:
 но при вводе цифрового значения в "Тариф на водоснабжение" выдает ошибку "Входная строка имела неверный формат"

цифрового в каком виде?
что используется для разделителя целой и дробных частей?
это же зависит от локали - точку вместо запятой пробовали использовать?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:12 03-05-2014 | Исправлено: Cheery, 04:13 03-05-2014
ServanteS87



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно, как смог быдлокодер разобрался. на двойной клик повесил следующее:

Код:
Private Sub rtwtrsppltxtbx_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtwtrsppltxtbx.DoubleClick
        Dim value1 As String
        Dim number1 As Double
        Dim value2 As String
        Dim number2 As Double
        value1 = rtwtrspplndstxtbx.Text
        value2 = ndstxtbx.Text
        If Double.TryParse(value1, number1) And Double.TryParse(value2, number2) Then
 
        Else : MsgBox("херь")
        End If
    End Sub

Специально не стал писать обработку на if, решил проверить. Все работает. Ошибок нет. Выдает "херь".
 
Добавлено:

Цитата:
цифрового в каком виде?  
что используется для разделителя целой и дробных частей?  
это же зависит от локали - точку вместо запятой пробовали использовать?

Да ни в каком, стоит ввести одну цифру - сразу ошибка.
Перевесил обработку на процедуру потери фокуса, вводил и с точкой и с запятой, все одно.
 
Добавлено:
Вдруг кому понадобится, вот решение:

Код:
 Private Sub rtwtrsppltxtbx_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtwtrsppltxtbx.TextChanged
         'Это наш код который будет обрабатывать всё что мы вводим в обоих TextBox
        _BB()
    End Sub
 
    Public Sub _BB()
        If rtwtrsppltxtbx.Text = String.Empty Then Exit Sub 'Определяем введено ли у нас число в TextBox "rtwtrsppltxtbx"
        If ndstxtbx.Text = String.Empty Then Exit Sub 'Определяем введено ли у нас число в TextBox "ndstxtbx"
        'если нет, то завершаем событие через оператор Exit Sub
         
        'дальше проверяем ввели мы правильно числа или нет
        Try
            ' правильно
            rtwtrspplndstxtbx.Text = Convert.ToDouble(rtwtrsppltxtbx.Text) * (Convert.ToInt32(ndstxtbx.Text) / 100)
        Catch ex As Exception
             ' неправильно
        End Try
    End Sub
 
    Private Sub ndstxtbx_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ndstxtbx.TextChanged
 'Это наш код который будет обрабатывать всё что мы вводим в обоих TextBox
        _BB()
    End Sub

Не буду расписывать, сплю на ходу...

Всего записей: 6 | Зарегистр. 26-06-2011 | Отправлено: 04:17 03-05-2014
Andryshok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Должно помочь
  http://msdn.microsoft.com/ru-ru/library/s2dy91zy.aspx
  http://www.rsdn.ru/forum/vb/1307895.all

Всего записей: 651 | Зарегистр. 03-06-2009 | Отправлено: 12:15 08-05-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Получение значения типа Double из TextBox


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru