【问题标题】:How to show cursor immediately on app startup?如何在应用程序启动时立即显示光标?
【发布时间】:2012-01-18 00:44:45
【问题描述】:

我的应用需要一些时间才能启动,因为 UI 很重。我想在用户双击快捷方式时显示 Cursors.AppWaiting 光标。所以我将Cursor.Current = Cursors.AppStarting; 弹出到主窗体的构造函数中。但是,当我启动应用程序时,直到加载表单后光标才会改变。

有没有办法在用户双击快捷方式后立即改变光标?

【问题讨论】:

标签: c# winforms user-interface .net-4.0 cursor


【解决方案1】:

好吧,您可以使用Background WorkerUseWaitCursor 属性来更改光标。

var bw = new BackgroundWorker();
UseWaitCursor = true;
bw.DoWork += (s, e) =>
{
    //do work.. 
};

bw.RunWorkerCompleted += (s, e) =>
{
   Invoke((Action)(() => UseWaitCursor = false)); 
};
bw.RunWorkerAsync();

【讨论】:

    【解决方案2】:

    尝试添加

    Application.DoEvents(); 
    

    改变光标后。

    【讨论】:

    • 极少数 (IMO) 使用 Application.DoEvents() 的合法时间之一
    • @Andrew:是的,我很犹豫是否将其作为答案,因为这是在糟糕的一天有人会否决的答案之一。
    • @Andrew,我不敢相信我听到你这么说;)
    • @Halabi 我明确表示并强调了很少。几乎每次我看到它都提到这是一个可怕的想法。
    • @Andrew 我知道你说什么,伙计。我很高兴;)
    【解决方案3】:

    只需折叠您的 MainGrid,直到应用加载完毕

    转换器参考

    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </Window.Resources>
    

    XAML 元素参考

     Visibility="{Binding Path=IsLoaded, Converter={StaticResource BooleanToVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
    

    【讨论】:

    • 这没有回答 OP 的问题。
    猜你喜欢
    • 2021-01-14
    • 2014-04-18
    • 2012-06-16
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2021-10-20
    相关资源
    最近更新 更多