2017-02-15 7 views
0

.25X2.00X2.50の形式で関連データを入力した後、部品番号をテキストボックスに出力するユーザーフォームを作成しようとしています。私は2つの場所に末尾のゼロを残すことに問題があります(追加されたデータに末尾のゼロまたは2つ以上のデータがなくても、値の間に "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 Decimal = Decimal.Parse(AngleLeg1.Text)'です。そして 'Decimal.TryParse'はさらに優れています。 – OneFineDay

+0

作業しているデータの種類や時期はわからないようです。すでに数値型_の値に対しては、Decimal.Parse()を呼び出しているようです。 **決してそれをしないでください。また、 '.ToString()'を呼び出して、その結果をDecimal型に代入します。 **決してそれをしないでください。 .Netを使って作業するときは、作業している変数や値のデータ型を知ることは非常に重要です。このコードは、この分野での完全な理解がないことを示しています。 –

答えて

0

最初のセクションで余分なToString()コールを取り除きます。それらの引数に有効な書式文字列が含まれていても、結果を10進値に割り当てているときは、今度は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値を設定することに注意を向けるましょう。

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

はすべての作品ということString.Format documentationや方法についてCustom Numeric Format String documentationを見てみましょう:あなたは本当にここにしたいことはString.Format()方法を使用することです。