Добавить вращающееся колесо, пока приложение ищет базу данных - PullRequest
4 голосов
/ 30 ноября 2010

У меня есть приложение, которое ищет в базе данных некоторую информацию.

Поскольку база данных довольно большая, иногда приложению требуется много времени, чтобы приложение вернуло результаты в интерфейс.

Я хочу добавить какое-то вращающееся колесо, чтобы сообщить пользователю, что приложение все еще ищет базу данных и не зависает.Как только результаты будут возвращены, колесо исчезнет.

Есть идеи, как это сделать, или есть хороший урок, объясняющий, как это сделать?

Ответы [ 3 ]

5 голосов
/ 30 ноября 2010

Рассматривали ли вы изменение указателя мыши на песочные часы, поскольку это было бы чрезвычайно просто реализовать:

Me.Cursor = Cursors.WaitCursor 

...Do your DB calls here...

Me.Cursor = Cursors.Default

Тем не менее, я бы согласился, что отображение «вращающегося колеса», вероятно, немного более удобно для пользователя и определенно намного более очевидно. Итак, сначала получите анимированный GIF, который соответствует вашим потребностям. Затем создайте форму с графическим блоком, содержащим изображение.

Если у вас есть возможность показать форму пользователю и в фоновом режиме выполнить работу с БД, после завершения закройте форму.

Другая альтернатива - вместо этого использовать скользящий индикатор прогресса, поэтому, когда он достигает 100%, он снова вращается и продолжает работать, пока вы его не закроете.

EDIT:

Одна вещь, которую я забыл упомянуть, это то, что вам придется обрабатывать условия исключения. Допустим, вы установили курсор на ожидание, тогда происходит ошибка. Исключение может обойти код, который сбрасывает все. Это оставляет пользователя с измененным курсором и без средств его изменения.

Когда я делал подобные вещи, я обычно создавал одноразовый класс WaitCursor, а затем использовал что-то вроде этого:

Using myWaitCursor As WaitCursor = New WaitCursor
...do something...
End Using

В классе Dispose of WaitCursor вы устанавливаете курсор на значение по умолчанию. То же самое применимо, если вы пошли по пути использования формы с изображением или индикатором выполнения.

3 голосов
/ 30 ноября 2010

Найдите анимированный GIF-файл такого блесны, как этот . Поместите его в PictureBox, установите его свойство Visible в True при запуске задания. Помните, что вам нужно будет выполнить запрос в рабочем потоке, чтобы сохранить анимацию и адаптировать пользовательский интерфейс. Класс BackgroundWorker хорош для этого.

0 голосов
/ 30 ноября 2010

Вы можете использовать курсор ожидания «Среда по умолчанию», который для Vista / 7 представляет собой круг с внешним вращением или песочные часы XP.

Вы можете запустить доступ к БД на BackgroundWorker и показать анимированный элемент управления, такой как индикатор выполнения Marquee, или вы можете показать пользовательскую анимацию, отображающую состояние занятости.

...