为了账号安全,请及时绑定邮箱和手机立即绑定

如何使光标转向等待光标?

如何使光标转向等待光标?

SMILET 2019-10-08 10:56:59
我有一个C#应用程序,有用户登录到该应用程序,并且由于哈希算法昂贵,因此需要花费一些时间。如何向用户显示“等待/忙碌光标”(通常是沙漏),以使他们知道程序正在执行操作?该项目在C#中。
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您可以使用Cursor.Current。


// Set cursor as hourglass

Cursor.Current = Cursors.WaitCursor;


// Execute your time-intensive hashing code here...


// Set cursor as default arrow

Cursor.Current = Cursors.Default;

但是,如果散列操作确实很漫长(MSDN将其定义为超过2-7秒),则可能应使用光标以外的视觉反馈指示器来向用户通知进度。有关更深入的指导原则,请参阅本文。


编辑:

正如@Am指出的那样,您可能需要在Application.DoEvents();之后致电Cursor.Current = Cursors.WaitCursor;以确保沙漏实际上已显示。


查看完整回答
反对 回复 2019-10-08
?
当年话下

TA贡献1890条经验 获得超9个赞

其实,


Cursor.Current = Cursors.WaitCursor;

临时设置“等待”光标,但不能确保在操作结束之前一直显示“等待”光标。实际上,当您在操作仍在运行时移动鼠标时,其他程序或程序中的控件可以轻松地将光标重置为默认箭头。


显示“等待”光标的一种更好的方法是将窗体中的UseWaitCursor属性设置为true:


form.UseWaitCursor = true;

这将显示窗体上所有控件的等待光标,直到将此属性设置为false为止。如果要在应用程序级别上显示等待光标,则应使用:


Application.UseWaitCursor = true;


查看完整回答
反对 回复 2019-10-08
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

在前一个方法的基础上,我的首选方法(由于这是一个经常执行的操作)是将等待光标代码包装在IDisposable帮助器类中,以便它可以与using()(一行代码)一起使用,采用可选参数,运行其中的代码,然后清理(还原光标)。


public class CursorWait : IDisposable

{

    public CursorWait(bool appStarting = false, bool applicationCursor = false)

    {

        // Wait

        Cursor.Current = appStarting ? Cursors.AppStarting : Cursors.WaitCursor;

        if (applicationCursor) Application.UseWaitCursor = true;

    }


    public void Dispose()

    {

        // Reset

        Cursor.Current = Cursors.Default;

        Application.UseWaitCursor = false;

    }

}

用法:


using (new CursorWait())

{

    // Perform some code that shows cursor

}


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信