2017-02-15 43 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()',然後將結果分配給Decimal類型。 **從不**這樣做。在使用.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 documentationCustom Numeric Format String documentation如何,所有的作品。