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;以确保沙漏实际上已显示。
TA贡献1890条经验 获得超9个赞
其实,
Cursor.Current = Cursors.WaitCursor;
临时设置“等待”光标,但不能确保在操作结束之前一直显示“等待”光标。实际上,当您在操作仍在运行时移动鼠标时,其他程序或程序中的控件可以轻松地将光标重置为默认箭头。
显示“等待”光标的一种更好的方法是将窗体中的UseWaitCursor属性设置为true:
form.UseWaitCursor = true;
这将显示窗体上所有控件的等待光标,直到将此属性设置为false为止。如果要在应用程序级别上显示等待光标,则应使用:
Application.UseWaitCursor = true;
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
}
- 3 回答
- 0 关注
- 484 浏览
添加回答
举报