2017-02-15 8 views
0

Я пытаюсь создать пользовательскую форму, которая выводит номер детали в текстовое поле, после ввода соответствующих данных в формате .25X2.00X2.50. У меня возникают проблемы с сохранением конечных нулей в двух местах (даже если добавленные данные не имеют завершающих нулей или более двух) и сохраняя «X» между значениями. Ниже приведена небольшая часть кода, который дает мне 25X2X25. Любые указатели или советы будут высоко оценены.Создание автоматического создания номера, vb.net

Dim AngleThicknessRound As Decimal = Decimal.Parse(AngleThicknessRound).ToString(AngleThickness.Text) 
Dim AngleLeg1Round As Decimal = Decimal.Parse(AngleLeg1Round).ToString(AngleLeg1.Text) 
Dim AngleLeg2Round As Decimal = Decimal.Parse(Math.Round(AngleLeg2Round, 2)).ToString(AngleLeg2.Text) 
ShapeAdd.Text = AngleThicknessRound & "X" & AngleLeg1Round & "X" & AngleLeg2Round 
+1

Вы должны анализировать текст, а не только созданную переменную. 'Dim AngleLeg1Round As Decimal = Decimal.Parse (AngleLeg1.Text)'. И 'Decimal.TryParse' еще лучше. – OneFineDay

+0

Вы, кажется, не знаете, с какими типами данных вы работаете и когда. Кажется, вы часто вызываете 'Decimal.Parse()' часто для значений, которые уже являются номерами типов. ** НИКОГДА не делайте этого. Вы также вызываете '.ToString()', а затем присваиваете результат десятичному типу. ** НИКОГДА не делайте этого. При работе с .Net важно знать тип данных любой переменной или значения, с которой вы работаете, и здесь код показывает полное отсутствие понимания в этой области. –

ответ

0

Избавиться от дополнительных ToString() вызовов в первом разделе. Даже если эти аргументы содержат допустимые строки формата, вы не хотите использовать tnem в это время, когда вы все еще назначаете результаты десятичному значению.

Кроме того, Math.Round() уже работает с числами. Почему вы думаете, что вам нужно использовать Decimal.Parse(), когда у вас уже есть номер? У вас есть Option Strict включен, не так ли? ПРАВИЛЬНО!?

И как только мы упростим это из кода, что происходит с этими объявлениями саморегуляции переменных?

Dim AngleThicknessRound As Decimal = Decimal.Parse(AngleThicknessRound) 
Dim AngleLeg1Round As Decimal = Decimal.Parse(AngleLeg1Round) 
Dim AngleLeg2Round As Decimal = Math.Round(AngleLeg2Round, 2) 

Но давайте предположим, что вы все это разобрали, и обратить внимание на установки значения ShapeAdd.Text. То, что вы действительно хотите здесь использовать String.Format() метод:

ShapeAdd.Text = String.Format("{0:#.00}X{1:#.00}X{2:#.00}", AngleThicknessRound, AngleLeg1Round, AngleLeg2Round) 

Посмотрите на String.Format documentation и Custom Numeric Format String documentation для, как это все работает.

 Смежные вопросы

  • Нет связанных вопросов^_^