Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MouseMove不更新label.Text_C#_Winforms - Fatal编程技术网

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,因变量,正在变化,所以我无法理解。