gpt4 book ai didi

wpf - 在长时间运行的操作之前强制重绘

转载 作者:行者123 更新时间:2023-12-04 11:43:12 25 4
gpt4 key购买 nike

当您有一个按钮时,请执行以下操作:

Private Function Button_OnClick

Button.Enabled = False

[LONG OPERATION]

End Function

那么按钮就不会变灰了,因为长时间的操作会阻止UI线程重新绘制控件。我知道正确的设计是启动后台线程/调度程序,但有时这对于一个简单的操作来说太麻烦了。

那么如何强制按钮在禁用状态下重绘?我在 Button 上尝试了 .UpdateLayout(),但没有任何效果。我还尝试了 System.Windows.Forms.DoEvents() ,它在使用 WinForms 时通常有效,但它也没有效果。

最佳答案

以下代码将执行您正在寻找的操作。但是我不会使用它。使用 BackgroundWorker长时间操作的类。它易于使用且非常稳定。
这里的代码:

   public static void ProcessUITasks() {            
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate(object parameter) {
frame.Continue = false;
return null;
}), null);
Dispatcher.PushFrame(frame);
}

Here您将找到有关如何使用 BackgroundWorker 的示例。

关于wpf - 在长时间运行的操作之前强制重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8128670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com