我有一个 WinForms 应用程序,并想添加一些不错的 WPF 控件,其中一个是“不确定的”进度条。它只是很好地动画,直到我告诉它停止。
我已经这样做了,并且正在绞尽脑汁想为什么它没有动画(更改进度条的值)。
我最终尝试以模态方式显示我的表单(包含 ElementHost),嘿,它会动画,但我想以非模态方式显示表单,因为我想继续在幕后处理。
是否有某种设置告诉 ElementHost 窗口继续“动画”?
谢谢里奇。
我有一个 WinForms 应用程序,并想添加一些不错的 WPF 控件,其中一个是“不确定的”进度条。它只是很好地动画,直到我告诉它停止。
我已经这样做了,并且正在绞尽脑汁想为什么它没有动画(更改进度条的值)。
我最终尝试以模态方式显示我的表单(包含 ElementHost),嘿,它会动画,但我想以非模态方式显示表单,因为我想继续在幕后处理。
是否有某种设置告诉 ElementHost 窗口继续“动画”?
谢谢里奇。
有很多方法可以做到这一点,最简单的一种是使用后台工作者来完成冗长的任务。Backgroundworker 有一个事件来报告进度。处理此事件并在处理程序中更改进度条的值。仅在主线程中制作动画同时仍在主线程上工作将无法正常工作...
您可以尝试的另一种方法(尽管我不推荐用于健康应用程序)是实现 DoEvents 函数并调用当您希望更新进度条时,它在主线程中......这是 DoEvents 实现的链接:
MSDN DoEvents sugestion
我强烈推荐第一种方法
正如我在上面的评论中提到的,解决方案是在一个单独的线程中运行处理,这允许 .net 主 GUI 线程完成它的工作,并为进度条设置动画。