在Windows窗体程序"处理"时显示微调器,类似于ajaxStart/ajaxStop?

bul*_*ous 21 .net c# ajax winforms

是的是的.我知道它们是两种完全不同的技术.我最近使用C#和Windows Forms从Web开发转移到FAT开发.我一直认为使用ajaxStart和ajaxStop显示微调器非常容易,因此用户知道正在发生的事情并继续等待.

对于可以全局实现的C#Windows窗体,是否有一种等效的简单技术?例如,如果我正在查询数据库并等待一些结果,通常程序会在几秒钟内无响应,然后在"处理"后再次开始工作.是否有一些全局方式我可以显示一个微调器,而我的程序是"处理"而不是识别程序中可能导致它无响应并且只是剥离新线程的所有可能点?

如果我不清楚,请告诉我.

Blo*_*ard 55

标准的Windows Forms方法是这样做的Cursor.Current = Cursors.WaitCursor;.

这对您有用,还是必须是图像?

  • 您还可以使用[Control.UseWaitCursor](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.usewaitcursor.aspx)属性. (2认同)

小智 12

我正在使用Visual Studio Enterprise 2015.这里给出了建议的游标样式/类型,它们都不适用于我.

与我合作的是:

private async void button_Click(object sender, RoutedEventArgs e)
{
    Cursor = Cursors.Wait; // change cursor to hourglass type
    ThatProcessThatTookVeryLongTime();
    Cursor = Cursors.Arrow; // change cursor to normal type
}
Run Code Online (Sandbox Code Playgroud)


Joe*_*oel 10

我可以添加此CodeProject 链接吗?

您只需要构建,从工具栏拖动并使用.该LoadingCircle组件完全没有任何问题.像魅力一样,你甚至可以自定义它!


Kor*_*ray 6

这是我在需要等待光标时想要使用的方式; 而不是写一个try-finally代码.

    #region WaitCursor
    public static IDisposable BeginWaitCursorBlock()
    {
        return ((!_waitCursorIsActive) ? (IDisposable)new waitCursor() : null);
    }
    private static bool _waitCursorIsActive;
    private class waitCursor : IDisposable
    {
        private Cursor oldCur;
        public waitCursor()
        {
            _waitCursorIsActive = true;
            oldCur = Cursor.Current;
            Cursor.Current = Cursors.WaitCursor;
        }
        public void Dispose()
        {
            Cursor.Current = oldCur;
            _waitCursorIsActive = false;
        }
    }
    #endregion
Run Code Online (Sandbox Code Playgroud)

使用示例:

using (BeginWaitCursorBlock())
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经开始使用它并取得了巨大的成功! (2认同)