2012-05-15 3 views
0

내 양식에 여러 개의 NumericUpDown 컨트롤이 포함되어 있습니다. 이 컨트롤은 다른 양의 소수 자릿수를 표시합니다. 나중에 내 코드에서 나는 그렇게 같은 문자열 배열 arrStr()의 다른 NumericUpDown.Value 년대를 넣어 : NumericUpDown에서 String으로 서식을 유지하는 방법

arrStr(1) = NumericUpDown1.Value 
arrStr(2) = NumericUpDown2.Value 
arrStr(3) = NumericUpDown3.Value 

가 그럼 난 텍스트 파일로 File.WriteAllLines 기능을 가진 배열을 인쇄 할 수 있습니다. 예를 NumericUpDown1.Value = 1.00, NumericUpDown2.Value = 2.30NumericUpDown3.Value = 2.124에 대한 파일이 거기에 다음과 같은 값이 경우

1.00 
2.30 
2.124 

내가 작동 Format을 시도했지만, 그 포맷 방법은 다음과 같습니다 싶습니다

1 
2.3 
2.124 

확인합니다 소수점 이하 자릿수가 각각 NumericUpDown에 대해 이미 설정되어 있으므로 편리하지 않습니다. 이 작업을 다시하는 것은 귀찮은 일이지만, 이제 Format을 사용하면됩니다.

답변

1

당신은 소수점 두 자리를 강제로 String.Format을 사용할 수

Dim value As Double = 2.3 
Dim formatted = String.Format("{0:f2}", value) ' 2.30 ' 

Standard Numeric Format Strings

편집 : 넌 배열이 크고, 당신은 피하고 싶은 경우 최대

arrStr(1) = String.Format("{0:f2}", NumericUpDown1.Value)arrStr(86) = String.Format("{0:f2}", NumericUpDown86.Value)

LINQ를 사용하여 creat 할 수 있습니다. 배열. NumericUpDown 컨트롤이 모두 GroupBox 인 경우 NumericGroupBox이라고 가정합니다. 당신은 소수점 이하 자릿수의 정확한 숫자 "주입"할 수 있습니다

Dim arrStr() As String = 
     (From n In NumericGroupBox.Controls.OfType(Of NumericUpDown)() 
     Select String.Format("{0:f" & n.DecimalPlaces & "}", n.Value)).ToArray() 

을 여기에 (주석으로) 당신의 TabControl이 모든 TabPages 검색하는 버전입니다 :

Dim allNumerics = From tp In Me.TabControl1.TabPages.Cast(Of TabPage)() 
        From n In tp.Controls.OfType(Of NumericUpDown)() 
        Select String.Format("{0:f" & n.DecimalPlaces & "}", n.Value) 
Dim arrStr As String() = allNumerics.ToArray() 
+0

소수점 이하 자릿수의 숫자도 참조 할 수는 NUD 컨트롤에서 직접 다른 컨트롤에 따라 다릅니다. –

+0

@Tim Schmelter : 배열의 각 문자열에 대해'String.Format'을 수행해야한다는 것을 의미합니까? 그렇다면'Format'을 사용하는 것과 같을 것이고 배열의 각 항목에 대해 서식 작업을 다시해야한다는 것을 의미하므로이 작업을 피하고 싶습니다. –

+0

@BartArondson : 어쨌든 문자열 배열에 모든 값을 넣을 수 있는데 왜 f.e를 사용할 수 없습니까? 'arrStr (2) = String.Format ("{0 : f2}", NumericUpDown2.Value)'? –

관련 문제