Ответ 1
Это должно работать
Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
Используйте System.Windows.Input
not System.Windows.Forms
.
Вот основные события, которые я хочу выполнить, когда мое приложение WPF запустится. Это очень похоже на то, как Word запускается на моей машине.
Все работает отлично, за исключением отображения загруженного курсора перед отображением заставки. Когда я запускаю приложение через ярлык, курсор ожидания мигает, но вскоре возвращается к умолчанию. Я пробовал разные способы установить Cursor, но никто не работает, но я думаю, что проблема в том, что я не в элементе управления/окнах - я делаю это из App.xaml.cs. И свойства, которые я устанавливаю, кажутся свойствами Windows Forms. Вот отрывок из моего кода в App.xaml.cs.
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
System.Windows.Forms.Application.UseWaitCursor = true;
//System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
//System.Windows.Forms.Application.DoEvents();
Initialize();
SplashWindow splash = new SplashWindow();
splash.Show();
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
// Right now I'm showing main window right after splash screen but I will eventually wait until splash screen closes.
MainWindow main = new MainWindow();
main.Show();
}
Это должно работать
Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
Используйте System.Windows.Input
not System.Windows.Forms
.
Если у вас есть задача, которая занимает значительное количество времени, и она работает в потоке, отличном от GUI (это хорошая идея), вы можете использовать этот код для изменения курсора приложения:
Application.Current.Dispatcher.Invoke(() =>
{
Mouse.OverrideCursor = Cursors.Wait;
});
Когда процесс занятости завершен, используйте это:
Application.Current.Dispatcher.Invoke(() =>
{
Mouse.OverrideCursor = null;
});
Я предполагаю, что Initialize() - это часть, для которой вы хотите, чтобы ваш загруженный курсор отображался, да?
Если да, попробуйте следующий подход:
<Window>
задайте следующие свойства: Visibility="Hidden"
и Cursor="Wait"
.Visiblity
в Visible
и также сбрасывает значение Cursor
.protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow main = new MainWindow();
main.Show(); // this should set the cursor how you want it
Initialize();
SplashWindow splash = new SplashWindow();
splash.Show();
main.Initialize(); // now invoke the Initialize method you created
// Right now I'm showing main window right after splash screen but I will eventually wait until splash screen closes.
}
Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
InitializeComponent();
...
Mouse.OverrideCursor = null;