C# MouseMove不更新label.Text
我有一个表单,上面有三个标签,当鼠标移动时,标签的值会改变。两个有效,第三个无效。这是我的鼠标移动代码:C# MouseMove不更新label.Text,c#,winforms,C#,Winforms,我有一个表单,上面有三个标签,当鼠标移动时,标签的值会改变。两个有效,第三个无效。这是我的鼠标移动代码: 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()
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”。有什么问题吗?
谢谢试试:
double latitude =
Math.Acos(latRadius * 1d / maxRadius) * (180.0/Math.PI);
label3.Text = latitude.ToString("0.00");
编辑以回答用户评论:
你的问题是,我认为你对latRadius和maxRadius都使用整数;因此,当应用程序计算latRadius/maxRadius时,它使用整数除法,因为latRadius小于maxRadius,所以它始终为零!
这就是你没有看到任何更新的原因。
现在,使用latRadius*1d/maxRadius,您可以强制编译器使用实数除法*1d,这意味着对双数1进行乘法,这样就完成了任务
更多:
不要使用数学。如果你要在其他公式中使用纬度,就在纬度上取整。
使用纬度为0.00的两位小数来显示它。您希望在label3.Text中得到什么结果?我们看不到您在哪里设置变量值,因此只能假设纬度始终为90,但您已经知道。。。这并不意味着标签没有正确更新,但您的数字存在问题。您是否检查了纬度值是否正确?latRadius、maxRadius是浮点型还是双精度型?我希望结果会随着纬度的重新计算而改变。这似乎没有发生。latradius和maxradius,因变量,正在变化,所以我无法理解。