【发布时间】:2013-07-12 21:35:01
【问题描述】:
在 WPF 应用程序中,我有一个用户控件,该控件使用 WindowsFormsHost 承载 win 表单 RichTextBox 控件。用户控件用于在特定时间可见的面板中。问题是表单控件显示在包含面板之前的片刻。我尝试将 RTB 的显示延迟到显示面板,但是当加载表单控件时 UI 冻结 2-4 秒。如果您知道使控制加载更快的解决方案,请提供帮助。谢谢!
【问题讨论】:
-
您能否将您的代码发布在(您认为)出错或休眠的地方?
-
我禁止对 RTB 进行任何处理,并且我在父面板中也没有做太多事情。所以控件的实际加载似乎是问题所在。如果将 RTB 的可见性设置为折叠,则面板会立即显示。将 RTB Visibility(从 Snoop)更改为 Visible 时,我看到 UI 一直冻结,直到加载控件。
-
你不应该使用任何 sleep 来延迟显示,而是使用可用的事件,例如 Loaded、Active、Focus 等。在主线程中睡眠是一个不好的举动。
-
是的,即使使用 System.Windows.Forms.Integration.ElementHost 在 Winforms 中托管 WpfControl,托管也很昂贵,需要更多时间。我希望您的代码不会有任何问题,WindowsFormsHost 本身将需要更多时间来向其中添加子控件
-
你能显示你添加延迟的代码吗?