Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
#1

Использование в расчетах пустых TextBox - Visual Basic .NET

07.09.2016, 17:01. Просмотров 615. Ответов 22
Метки нет (Все метки)

Суть проблемы такова. На форме имеются много TextBox. Каждому присвоена переменная для использования в расчетах. При выполнении расчетов бывают задействованы не все TextBox часть остаются пустыми. При итоговом подсчете программа выбирает значения из заполненых TextBox а при выборке из пустых TextBox выдается ошибка Пробовал написать такую вещь но не помогает
vb.net
1
if TextBox1.Text="" Then TextBox1.Text="0"
чтобы заполнить TextBox все значения в TextBox цифровые целые числа или с запятой
http://www.cyberforum.ru/vb-net/thread2038621.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2016, 17:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование в расчетах пустых TextBox (Visual Basic .NET):

TextBox color - Как окрасить на форме TextBox от разного значения
Всем привет У меня вопрос по VB. На форме много TextBox и окрашивать их по...

Отобразить текст в Textbox из другого TextBox в разных кодировках без сохранения в файл
Доброго всем времени суток! Есть на форме несколько Textbox"сов. В 1-й...

Видимость TextBox в зависимости от фокуса в других TextBox
Здравствуйте! Помогите реализовать такую задумку... На форме имеется четыре...

Подсчет заполненных и пустых ячеек в столбце DataGridview
Всем привет! Подскажите как правильно подсчитать кол-во пустых и не пустых...

Непростой поиск пустых ячеек excel с последующим заполнением
Здравствуйте! Прошу помочь со следующей проблемкой: Есть форма (vb.net,...

22
OwenGlendower
Супер-модератор
Эксперт .NET
8748 / 7752 / 3318
Регистрация: 17.03.2014
Сообщений: 15,252
Записей в блоге: 1
07.09.2016, 17:52 #2
Цитата Сообщение от andrsh Посмотреть сообщение
при выборке из пустых TextBox выдается ошибка
Покажи код выборки и текст ошибки.
1
Kulma
426 / 365 / 62
Регистрация: 25.07.2015
Сообщений: 667
07.09.2016, 18:00 #3
Цитата Сообщение от andrsh Посмотреть сообщение
не помогает if TextBox1.Text="" Then TextBox1.Text="0" чтобы заполнить TextBox все значения в TextBox цифровые целые числа или с запятой
Не помогает почему , что должно выполняться ?
Код не самый красивый , но рабочий в принципе...
1
Миниатюры
Использование в расчетах пустых TextBox  
Памирыч
Почетный модератор
20840 / 8722 / 1079
Регистрация: 11.04.2010
Сообщений: 11,012
07.09.2016, 18:32 #4
КМК, проще уж использовать NumericUpDown
2
vxsw
69 / 69 / 10
Регистрация: 15.08.2012
Сообщений: 71
07.09.2016, 19:25 #5
а я вообще не понял зачем хранить расчетные переменные в текстбоксах. текстбоксы нужны либо для вывода информации, либо для ее ввода. а все что подлежит расчету, промежуточные данные, да и результаты, в первую очередь должны формироваться в памяти (переменных/массивах), а потом уже выводиться пользователю
2
Kulma
426 / 365 / 62
Регистрация: 25.07.2015
Сообщений: 667
07.09.2016, 19:54 #6
Цитата Сообщение от vxsw Посмотреть сообщение
текстбоксы нужны либо для вывода информации, либо для ее ввода.

Не по теме:

Что-то мне подсказывает , что именно так оно и есть, просто
изложение задачи хромает.


Проблема ,на сколько удалось домыслить , в том, что
не в каждой задаче юзер использует все textbox для ввода расчётных данных.
Вот на пустые то как раз и матерится прога , если я конечно правильно понял ТС,
и эту проблему он пытается обойти.
1
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
07.09.2016, 21:28  [ТС] #7
часть Textbox я использую дя ввода данных. в других Textbox отображаются результаты которые потом могут использоваться для других расчетов на этой же форме. Часть Textbox не используется когда определенные расчеты не нужно делать

Добавлено через 23 минуты
Код выборки
vb.net
1
 lkoflv12 = CDbl(Kodnlfv12.Text)
пишет Приведение строки "

" к типу "Double" является недопустимым.
0
vxsw
69 / 69 / 10
Регистрация: 15.08.2012
Сообщений: 71
07.09.2016, 21:39 #8
хоть это и за пределами моего понимания, но тогда делай хотя-бы так:
vb.net
1
lkoflv12 = CDbl(Val(Kodnlfv12.Text))
з.ы. проблема в том, что валится именно из-за пустого выражения. т.е. из-за варианта "CDbl("")"
1
Kulma
426 / 365 / 62
Регистрация: 25.07.2015
Сообщений: 667
07.09.2016, 21:41 #9
Цитата Сообщение от andrsh Посмотреть сообщение
" к типу "Double" является недопустимым.
Как вариант:
Какой десятичный разделитель используется в textbox ?
Здесь обсуждалась эта тема .
Разумеется , если Kodnlfv12.Text не пустой
1
Kulma
426 / 365 / 62
Регистрация: 25.07.2015
Сообщений: 667
07.09.2016, 21:51 #10
У меня при разделителе "запятая" всё отрабатывает, при "точке" выдаёт
исключение
1
Миниатюры
Использование в расчетах пустых TextBox   Использование в расчетах пустых TextBox  
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
07.09.2016, 23:21  [ТС] #11
Спасибо всем кто пытался разобраться в моей проблеме. Мне один товарищ написал функцию которая решает проблему с пустыми TextBox. Если кому интересно могу сбросить. Тепрь все работает без ошибок. Завтра закрою эту тему.
0
Orlangur1991
1021 / 955 / 224
Регистрация: 28.11.2014
Сообщений: 1,457
08.09.2016, 10:54 #12
andrsh, тему закрыть ты не сможешь) а вот решением желательно поделиться))
3
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
08.09.2016, 21:03  [ТС] #13
Вот код этой функции которая присваивает всем TextBox значение 0. но TextBox остаются визуально пустыми, но прога больше не ругается за незаполненные TextBox.
vb.net
1
2
3
4
5
6
7
8
9
 Function vvod(ByVal T As TextBox, ByVal a As Double)
        Dim b As Double
        Try
            b = T.Text
        Catch ex As Exception
            b = a
        End Try
        Return b
    End Function
а присвоение переменной значения из TextBox выглядит так
vb.net
1
 х = vvod(TextBox1, 0)
0
Orlangur1991
1021 / 955 / 224
Регистрация: 28.11.2014
Сообщений: 1,457
08.09.2016, 22:14 #14
andrsh, а чему равно a?
1
vxsw
69 / 69 / 10
Регистрация: 15.08.2012
Сообщений: 71
09.09.2016, 07:46 #15
Цитата Сообщение от Orlangur1991 Посмотреть сообщение
andrsh, а чему равно a?
Цитата Сообщение от andrsh Посмотреть сообщение
х = vvod(TextBox1, 0)
значение по умолчанию, в случае фейла. "костыли это кошерно".
1
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
09.09.2016, 08:57  [ТС] #16
a ничему не равно все записывается как есть и все работает нормально может быть это и криво но главное работает. пусть хоть кто-то подскажет что-либо правильнее
0
Orlangur1991
1021 / 955 / 224
Регистрация: 28.11.2014
Сообщений: 1,457
09.09.2016, 10:22 #17
andrsh, ну постановка задачи не совсем понятна, какие-то вычисления, допустим, нам надо сложить все числа, можно сделать так
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim s As Double = 0
 
        For Each T As TextBox In Me.Controls.OfType(Of TextBox)() 'перебираем все textbox на форме
            If Not IsNumeric(T.Text) Then ' если содержимое textbox не является числом, то 
                s = s + 0 ' ничего не прибавляем
            Else
                s = s + T.Text ' прибавляем содержимое
            End If
 
        Next
        Label1.Text = s 'выводим сумму
    End Sub
1
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
09.09.2016, 10:27 #18
andrsh, А ЕСЛИ БЕЗ ФУНКЦИЙ И В ОДНУ СТРОКУ?
vb.net
1
x= Convert.ToDouble(IIf(TextBox1.Text = "", 0, TextBox1.Text.Replace(",", ".")))
1
andrsh
0 / 0 / 0
Регистрация: 01.08.2016
Сообщений: 10
09.09.2016, 10:47  [ТС] #19
На самом деле в проге на форме расположено около 60 TextBox. вычисления идут не сразу во всех. Существует несколько строк в каждой из которых по 7 или 6 TextBox. В каждой строке есть TextBox для ввода данных и TextBox для вывода результатов. Эти результаты потом обрабатываются и выводятся в итоговые TextBox для просмотра итогов. а потом выводятся в другое место для окончательного вывода на печать или хранятся в определенном формате. заводятся. В итоговых TextBox они также обрабатываются для получения других значений. Когда расчеты велись не во всех строчках тогда и возникала проблема с пустыми TextBox. Сейчас ее нет. Может и можно было как-то задать проге чтобы она выбирала значения только из тех TextBox где есть значения, но я думаю что такой вариант более простой. В каждой строке свой алгоритм обработки.

Добавлено через 1 минуту
Еще раз спасибо всем кто откликнулся на мою проблему
0
Orlangur1991
1021 / 955 / 224
Регистрация: 28.11.2014
Сообщений: 1,457
09.09.2016, 11:13 #20
Цитата Сообщение от andrsh Посмотреть сообщение
Может и можно было как-то задать проге чтобы она выбирала значения только из тех TextBox где есть значения
пример
vb.net
1
2
3
4
5
6
7
8
9
 Dim s As Double = 0
 
        For Each T As TextBox In Me.Controls.OfType(Of TextBox)() 'перебираем все textbox на форме
            If T.Text <> "" Then
                s = s + T.Text
            End If
 
        Next
        Label1.Text = s 'выводим сумму
1
09.09.2016, 11:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2016, 11:13
Привет! Вот еще темы с решениями:

Использование возможностей VBA при расчетах в MS Excel
У меня такая вот проблемка, написал програмку на VBA , а в одном месте пишет...

Vba.Textbox. Использование TextBox из модуля формы в главном модуле
Всем привет! Ребята, очень нужна помощь! Заранее извиняюсь, если данная тема...

Подсчитать количество пустых строк в текстовом файле. Сформировать новый файл, в котором пустых строк нет
Задано произвольный текстовый файл. Подсчитать количество пустых строк в этом...

Использование textBox в потоках
using namespace System; using namespace System::Threading; const int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru