Изменение курсора с ожидания на значение по умолчанию не работает при изменении формы - PullRequest
0 голосов
/ 17 января 2012

У нас есть проект Windows Mobile 6, который запущен и работает уже два года.

При разработке новой версии изменения курсора перестали работать на некоторых наших устройствах.

Самое проблемное место - это когда меняются формы.Код в основном:

Cursor.Current = Cursors.WaitCursor;            
ShowForm(FormSettings);
FormSettings.ReInit();
Cursor.Current = Cursors.Default;

WaitCursor появляется, но никогда не исчезает.

При отладке я ясно вижу, что все строки кода выполняются, и после последнего оператора я могу проверить значениеCursor.Current в окне «watch» или «Immediate» и убедитесь, что для него явно установлено значение Cursors.Default (или, скорее, значение Cursor.Default - что-то с «ARROW»).

Дополнительная информация:

Если я в конце FormSettings.ReInit() добавлю MessageBox.Show(""), курсор исчезнет или станет Cursors.Default.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2012

Решением этой проблемы была обработка всех изменений курсора в коде форм.

Не уверен, почему половина этого работала даже при другом подходе, но теперь все это работает.

0 голосов
/ 17 января 2012

Это произойдет, когда в одной из ваших подпрограмм возникнет необработанное исключение.

Если исключение не выдается, то это происходит либо в подпрограмме с многопоточностью, либо в запросе LINQ, либо в форме *Секция 1003 *.

Чтобы вернуть Cursor, сделайте следующее:

Cursor.Current = Cursors.WaitCursor;
try {
  ShowForm(FormSettings);
  FormSettings.ReInit();
} finally {
  Cursor.Current = Cursors.Default;
}

Но у вас проблема где-то в ShowForm или ReInit().Вы должны перейти к этим процедурам и добавить туда try...catch, пока не разберетесь.

...