2009-07-07 2 views
2

В приложении WinForms, я хочу, чтобы обеспечить визуальную обратную связь, что зацикливание процедура фона продолжается (Это не то, что инициируется пользователем или блокирует их с помощью пользовательского интерфейса)WinForms - индикатор активности

Изменить - Это происходит постоянно, зацикливается. Пользователь не должен знать, когда итерация начинается или заканчивается.

Я думаю о какой-то маленькой, квадратной, петлевой анимации. Что-то вроде сегментированного «счетчика», часто используемого в приложениях Mac/iPhone.

spinner http://img12.imageshack.us/img12/4402/spinner.png

Есть встроенный WinForms управления, аналогичная идея? Если нет, каков наилучший способ сделать это?

+1

Как использовать курсор ожидания? –

+0

Можно ли разместить анимацию на форме? Он будет находиться в этом состоянии практически все время (это, по сути, подтверждение того, что пользователю показываются данные в реальном времени/автоматически обновленные данные), поэтому я не хочу менять курсор мыши. – xyz

ответ

23

Просто уронить animated GIF по форме и убедитесь, что вы не блокирует поток пользовательского интерфейса:

alt text http://files.rsdn.ru/27808/ajax-loader.gif

+1

Вы можете даже скрыть/показать анимированный gif с помощью делегата в фоновом процессе, когда этот процесс запущен ... это кажется самым простым решением –

+0

+1 для такой отличной ссылки –

1

Используйте либо пользовательскую разработанную модель резьбы, либо модель BackgroundWorker.

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

2

Вместо того, чтобы писать этот

public void DoWork() 
{ 
    try 
    { 
    this.Cursor = Cursors.WaitCursor; 
    DoSomeBigThing(); 
    . . . . 
    } 
    catch() 
    { 
     . . . .. 
    } 
    finally 
    { 
     . . . . 
     this.Cursor = Cursors.Default; 
    } 
} 
  1. Создайте свой собственный курсор мыши (.cur) с некоторыми бесплатными инструментами (Google или Bing для этого)
  2. Используйте AutoWaitCursor и установите курсор мыши на свой собственный созданный курсор

    Курсор myCursor = новый курсор («myCoolCursor.cur»);

+0

https://github.com/rluiten/WinForm -AutoWaitCursor-Проблема/блоб/ведущий/WinForm% 20AutoWaitCursor% 20Problem/AutoWaitCursor.cs –

Смежные вопросы