【问题标题】:WinForms - Activity IndicatorWinForms - 活动指示器
【发布时间】:2010-11-08 15:57:49
【问题描述】:

在 WinForms 应用程序中,我想提供循环后台程序正在进行的视觉反馈(它不是由用户启动或阻止他们使用 UI)

编辑 - 它一直在进行,循环播放。用户不需要知道迭代何时开始或结束。

我在想某种小的方形循环动画。类似于 Mac/iPhone 应用程序中经常使用的分段“微调器”。

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

是否有类似想法的内置 WinForms 控件?如果没有,最好的方法是什么?

【问题讨论】:

  • 使用等待光标怎么样?
  • 那个动画可以放在表单上吗?它将几乎一直处于这种状态(本质上是确认用户正在显示实时/自动刷新的数据),所以我不想更改鼠标光标。

标签: .net winforms user-interface controls


【解决方案1】:

使用自定义开发的线程模型或BackgroundWorker

让后台线程使用委托处理程序定期将事件发送回您的主 GUI 线程,考虑线程安全,或者如果您使用的是 BackgroundWorker,则使用 ProgressChanged 事件。

【讨论】:

    【解决方案2】:

    只需在表单上添加animated GIF 并确保您没有阻塞 UI 线程:

    【讨论】:

    • 您甚至可以在后台进程运行时使用委托隐藏/显示动画 gif...这似乎是最简单的解决方案
    【解决方案3】:

    而不是写这个

    public void DoWork()
    {
      try
      {
         this.Cursor = Cursors.WaitCursor;
         DoSomeBigThing();
         . . . .
      }
      catch()
      {
          . . . ..
      }
      finally
      {
          . . . .
          this.Cursor = Cursors.Default;
      }
    }
    
    1. 使用一些免费工具(谷歌或必应)创建您自己的鼠标光标(.cur 文件)
    2. 使用AutoWaitCursor 并将鼠标光标设置为您自己创建的光标

      光标 myCursor = new Cursor("myCoolCursor.cur");

    猜你喜欢
    • 2011-06-28
    • 2012-06-08
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多