MouseMove не обновляет ярлык. Текст - PullRequest
0 голосов
/ 19 октября 2011

У меня есть форма, на которой есть три метки, значения которых меняются при движении мыши.Две работы, третья - нет.Вот мой код 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 Ответ

5 голосов
/ 19 октября 2011

Попробуйте:

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

EDITED , чтобы ответить на комментарий пользователя:
Ваша проблема в том, что вы используете целые числа как для latRadius, так и maxRadius (я думаю);поэтому, когда ваше приложение оценивает (latRadius / maxRadius), оно использует целочисленное деление, и поскольку значение latRadius меньше, чем maxRadius, оно всегда равно нулю!
По этой причине вы не видели никакого обновления.
Теперь, используя (latRadius * 1d / maxRadius)вынудить компилятор использовать реальное деление (*1d означает умножение на двойное число 1), и работа выполнена.

БОЛЬШЕ :
Не используйте Math.Round на широте, если вы собираетесь использовать его в других формулах.
Покажите его, используя два десятичных знака с latitude.ToString("0.00").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...