Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理占据同一区域的不同面板的最佳方法_C#_Winforms - Fatal编程技术网

C# 处理占据同一区域的不同面板的最佳方法

C# 处理占据同一区域的不同面板的最佳方法,c#,winforms,C#,Winforms,我有以下申请: 我想在用户单击其中一个NavBarItem(如Microsoft OUTLOOK)时更改标记区域。我一直在做一些研究,很多人说我可以添加几个面板,并在用户单击navBarItem时显示/隐藏它们。但该区域将包含许多GridView和许多其他控件。我不知道是否要在应用程序启动时初始化所有控件,因为要让所有控件同时运行,cpu和内存都会很困难。我不认为这是一个优雅的解决这种情况的办法。但是,如果我选择在用户被点击到相应的navBarItem时初始化控件,那么对用户来说,它将是滞后的

我有以下申请:

我想在用户单击其中一个NavBarItem(如Microsoft OUTLOOK)时更改标记区域。我一直在做一些研究,很多人说我可以添加几个面板,并在用户单击navBarItem时显示/隐藏它们。但该区域将包含许多GridView和许多其他控件。我不知道是否要在应用程序启动时初始化所有控件,因为要让所有控件同时运行,cpu和内存都会很困难。我不认为这是一个优雅的解决这种情况的办法。但是,如果我选择在用户被点击到相应的navBarItem时初始化控件,那么对用户来说,它将是滞后的

对于这种情况,最佳的设计方法是什么

附言:我也可以使用商业图书馆


谢谢。

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

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

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

是否有一个或两个面板将被大部分时间使用?如果是这样,您可以预加载这些面板,以便用户对他们最常导航到的面板有更好的体验

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

是使用任务从UI运行后台线程的示例


另一个使用BackgroundWorker。

如果我将初始化的屏幕保存在内存中,它将是10多个GridView,内存中包含大量数据和其他控件。我不认为这是有效的。我不是说同时填充它们,在用户导航到它们时填充它们,而是在后台加载数据。这将更快地显示屏幕,并为用户提供更好的体验。如果控件占用太多内存,则在用户导航到另一个面板时将其丢弃。如果没有,则保留它们,以便用户在第二次导航时能够获得更好的体验。因此,您的意思是坚持使用具有隐藏/显示功能的多个面板,但为获得更好的用户体验和内存管理,请使用一些技巧?是的,我还更新了我的答案,添加了几个链接,让您更好地了解可能的后台处理类型。根据您使用的.Net版本,还有其他方法。这是两种比较常见的方法。好吧,我来看看!