2011-10-19 3 views
-1

3 개의 레이블이있는 폼이 있습니다.이 레이블은 마우스가 움직일 때마다 값이 변경됩니다. 두 사람은 일하고 세 번째 사람은하지 않습니다. 다음은 내 MouseMove 코드입니다.MouseMove는 label.Text를 업데이트하지 않습니다. Text

double latitude = Math.Round(Math.Acos(latRadius/maxRadius) * (180.0/Math.PI), 2); 
label1.Text = x.ToString() + "," + y.ToString(); 
label2.Text = latRadius.ToString() + "," + maxRadius.ToString(); 
label3.Text = Convert.ToString(latitude); 

첫 번째 두 개의 레이블이 올바르게 업데이트되고 세 번째 레이블은 '90'으로 계속 표시됩니다. 뭐가 문제 야? 감사

+1

label3.Text에서 어떤 결과가 나타 납니까? –

+1

변수 값을 어디에서 설정하는지 알 수 없으므로 '위도'는 항상 90이라고 가정 할 수 있지만 이미 알고 있습니다 ... 이것은 라벨이 제대로 업데이트되지 않는다는 것을 의미하지는 않습니다. 당신 전화 번호에 문제가 있다는 것. –

+0

위도에 올바른 값이 있는지 확인 했습니까? – Fischermaen

답변

5

시도 :

double latitude = 
    Math.Acos(latRadius * 1d/maxRadius) * (180.0/Math.PI); 
label3.Text = latitude.ToString("0.00"); 

사용자 의견에 답 편집 :
문제는 모두 latRadiusmaxRadius (내가 생각하는)에 대한 정수를 사용입니다; 따라서 앱이 (latRadius/maxRadius)을 평가할 때 정수 나누기를 사용하고 latRadius가 maxRadius보다 작 으면 항상 0입니다!
업데이트가 표시되지 않는 이유가 여기 있습니다.
이제 (latRadius * 1d/maxRadius)을 사용하면 컴파일러에서 실수 나누기 (*1d은 이중 숫자 1에 곱셈을 의미)를 사용하도록하고 작업이 완료됩니다.

: 당신이 다른 수식에서 사용하려는 경우
는 위도에 Math.Round를 사용하지 마십시오.
두 개의 십진수로 latitude.ToString("0.00")으로 표시하십시오.

+0

어떻게 작동하는지 모르겠지만 작동하지 않습니다. – Apophis

+0

앞으로도 여러 번 사용할 것입니다. – Apophis

관련 문제