2012-06-18 6 views
1

"diff_Box"라는 텍스트 상자에 기본값 "2.5"를 부여한 다음 다른 값을 확인하기 위해이 값을 사용하여 "textbox5"라는 다른 텍스트 상자에 붙여 넣습니다 ". 하지만 textbox5에서는 25로 표시됩니다. 매우 일반적인 문제이지만, 어떻게 든 해결할 수는 없습니다. 나는 sofar를 시도했다;다른 텍스트 상자에 텍스트 상자 값 전달

double diff; 

diff = Double.parse(diff_Box.Text); 
diff = Convert.ToDouble(diff_Box.Text); 



textBox5.Text = Convert.ToString(diff); 
textBox5.Text = diff.ToString("F2"); 
textBox5.Text = ToString.parse(diff); 

하지만이 같은 문제를 사전에

덕분에 모든 시간을 발생하고는

enter image description here

enter image description here

+2

왜 변환 하시겠습니까? 내가 놓친 게 있니? 확실하게 textBox5.Text = diff_Box.Text가 작동할까요? – WestDiscGolf

+2

입력/출력용으로 만 textBox를 사용해야합니다. 실제 값의 컨테이너가 아닙니다. 값을 로컬 변수'Double _diff;'에 저장하고 두 텍스트 상자에 모두 사용하십시오. – Aphelion

+0

@Aphelion 나는 동의하지 않는다. 텍스트 상자가 이미 수행 한 것을 저장하는 또 다른 변수를 만드는 이유는 무엇입니까? – Doomsknight

답변

2

문제는 당신이 형식을 사용하여 하지 점이다 시스템 UI 문화에서 사용됩니다. 실제로는 GUI에서 InvariantCulture을 사용하고 있습니다.

텍스트 상자에 .을 사용합니다. 현재 UI 문화가 ,을 사용한다고 가정합니다. 따라서 . 다음에 숫자가 표시되지 않으며 2.5 대신 25.0이 표시됩니다.

InvariantCulture 대신 시스템 UI 문화를 사용하여 다시 변환합니다이 줄 : 더 나은 접근 방식은 그러나 개인 Double _diff를 사용하고 단지에 표시하기 위해 필요한 문화로 변환하는 것입니다

double diff = Double.Parse(diff_Box.text, CultureInfo.InvariantCulture); 

을 형태. 둘째, 사용자가 데이터 입력을 위해 UI culture를 사용할 것으로 기대해야합니다.

+0

어디에서 봤습니까? 코드에서 쉼표를 볼 수 없습니다. 나는 항상 포인트를 사용했다. – mctuna

+0

@mrtcn 답변을 업데이트했습니다. – Aphelion

+0

그것은 작동합니다. 감사하다는 것을 알면 좋습니다. – mctuna