处理占用相同区域的不同面板的最佳方式

时间:2012-12-07 15:59:52

标签: c# winforms

我有这个应用程序:myApplication

我想在用户点击其中一个navBarItems(如Microsoft OUTLOOK)时更改标记区域。我一直在做一些研究,很多人说我可以添加几个面板,并在用户点击navBarItem时显示/隐藏它们。但该区域将包含许多网格视图和许多其他控件。我不知道我是否想在应用程序启动时初始化它们,因为在cpu和内存上很难保持所有控件同时运行。对于这种情况,我认为这不是一个优雅的解决方案。但是如果我选择在用户点击相应的navBarItem时初始化控件,那么对用户来说就会很慢。

针对这种情况的最佳设计方法是什么?

PS:我也可以使用商业图书馆。

谢谢。

1 个答案:

答案 0 :(得分:0)

不一定非常迟钝。如果先显示屏幕然后在后台填充数据,则对用户来说可能看起来不太糟糕。此外,一旦特定屏幕被初始化,您可能会将其保留在内存中,以便用户导航到后续时间会更快。

另外,查看要加载到每个控件中的数据。有些数据是一样的吗?你能在后台预加载一些数据并保留它吗?

你有很多下拉列表吗?如果是这样,您是否可以预先填充或缓存某些下拉列表数据以提高性能?

是否有一个或两个面板将在大多数时间内使用?如果是这样,您可以预加载这些面板,以便用户可以更好地体验他们最常导航的面板。

加载数据的后台处理将使您的代码更加复杂,但这将是从您的应用程序获得良好响应时间的最佳方式。

Here是使用Task从UI运行后台线程的示例。

使用BackgroundWorker的另一个one