MouseMove不更新label.Text

时间:2011-10-19 11:26:00

标签: c# winforms

我有一个表格,上面有三个标签,当鼠标移动时,其值会发生变化。两个工作,第三个没有。这是我的MouseMove代码:

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 个答案:

答案 0 :(得分:5)

尝试:

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

已编辑以回答用户评论:
你的问题是你在latRadiusmaxRadius使用整数(我认为);因此,当您的应用评估(latRadius / maxRadius)时,它使用整数除法,并且因为latRadius小于maxRadius,所以它始终为零!
这就是你没有看到任何更新的原因 现在,使用(latRadius * 1d / maxRadius)强制编译器使用实数除法(*1d表示乘以双数1)并完成作业。

更多
如果您打算在其他公式中使用它,请不要在纬度上使用Math.Round 使用latitude.ToString("0.00")两位小数显示它。