PDA

Показать полную графическую версию : [решено] Помогите советом, пожалуйста... (VB Express 2010)


Andrew_VK
07-01-2016, 00:54
Понял необходимость умения писать несложные расчетные программы.
Это первая.
Вопрос - хотелось бы получать результат вычисления сразу в обоих TextBox-ах (3 и 4) не дожидаясь перевода фокуса (или перемещения курсора в эти поля).
Например: в ТВ1 пишется некоторое значение, после этого пишется значение в ТВ2. В ТВ3 и 4 выводятся результаты.
В данном случае решается треугольник, и значения могут быть любыми. Так, если значения будут 20 и 100, то в ТВ1 вписывается соответственно 20, а в ТВ2 будет вписываться 100. Но, хотелось бы, чтобы значения ТВ3 и 4 менялись сразу же после занесения 1, потом 0 и опять 0.
Буду благодарен за пример "как надо" для дальнейшего изучения и применения (я же только учусь).
Пример программы ниже (Visual Basic Express 2010):

Public Class Form1
Dim X, Y, radians, result, angle As Double
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
X = Val(TextBox1.Text)
End Sub

Private Sub TextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox2.TextChanged
Y = Val(TextBox2.Text)
End Sub

Private Sub TextBox3_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox3.TextChanged
radians = Math.Atan(Y / X)
angle = radians * (180 / Math.PI)
result = 90 - angle
TextBox3.Text = Math.Round(result, 4)
End Sub

Private Sub TextBox4_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox4.TextChanged
TextBox4.Text = Math.Round(result * 2, 4)
End Sub
End Class

Iska
07-01-2016, 02:41
хотелось бы получать результат вычисления сразу в обоих TextBox-ах (3 и 4) не дожидаясь перевода фокуса (или перемещения курсора в эти поля). »
Это не лучший выбор. Лучше завести отдельную командную кнопку «Выполнить расчёт».

Того, что Вы выложили — недостаточно. Опишите всю задачу целиком. Покажите весь проект. Как организовано ограничение на ввод некорректных данных (например, вводятся не цифры, а буквы)?

Drongo
07-01-2016, 13:26
Я понял о чём автор говорит. Я опишу алгоритм, хоть сам это делал на С++

В обработчике OnKeyPress тексбокса1, вызываете функцию, пусть она будет называться Calculate(), в самой функции Calculate() делаете расчёты и вывод в ТВ 3 и 4, тогда по нажатию кнопки в ТВ 1 у вас вызовется Calculate() с последующим расчётом и заполнением ТВ 3 и 4.

Как организовано ограничение на ввод некорректных данных (например, вводятся не цифры, а буквы »Ну это просто свойство можно поставить NumberOnly = true

http://tnkscr.net/lguPZT.jpg

Andrew_VK
07-01-2016, 13:39
Спасибо за ответ, я именно так и сделал и, о чудо - все работает так как хотел. Теперь понимаю, что вопрос был совершенно примитивным. Извините!

Насчет кнопки "Расчет" - не удобно, т.к. бывает нужно просто быстренько подбирать подходящие варианты сторон, для получения нужного угла, а лишняя операция не очень удобна.




© OSzone.net 2001-2012