.net - 紧凑型框架最佳实践 : Building a GUI

标签 .net user-interface compact-framework

我正在维护一个使用 .NET Framework 构建的 Windows CE 应用程序,该应用程序有大约 45 个表单。有 5 个“部分”可通向您想要的功能。该应用程序是 100% 全屏的,重要的是它不能被最小化。

由于有如此多的表单,因此很难跟踪关闭一个表单后应该显示哪个表单。为此,我在显示之前设置了表单所有者属性,并在关闭它时显示了所有者。

我还被告知最好在应用程序加载时实例化所有表单,而不是处理它们以节省处理时间。我不确定这一点。

我的问题是,在您希望任何 1 个表单始终全屏显示的位置显示、隐藏表单的最佳方式是什么?

最佳答案

当应用程序启动时,我不会走实例化 45 个表单的路线。这会严重延长启动时间,并可能(如果不是可能的话)耗尽您的内存资源,所有这些都是为了提供您的用户甚至可能不需要的功能。

在我的 WinMo 应用程序中,每个窗体都设计为使用相对较小的数据子集,因此启动时间仅限于数据库调用和将数据加载到窗体控件中。通常,实例化这些表单中的一个并显示它所需的时间永远不会超过一两秒。

如果您的表单显示时间比这更长,则可能是您的数据检索或数据加载到表单控件的方式存在问题(例如,您可能有一个自定义 gridview 控件,即使它完全呈现所有 300 行一次只有 12 个可见)。如果您的数据太大以至于需要很长时间才能合法地检索,那么这些数据可能远远超过用户实际上可以与之交互的数据。

我假设您提到“5 个部分”以获取用户需要去的地方意味着他们可能(最多)“深入”5 个级别以获取某些内容。如果您通过让每个表单实例化并使用 ShowDialog 显示下一个表单来实现这一点。 ,您在任何时候最多都会有 5-6 个表单,这对于 .Net CF 应用程序应该没有任何问题(我一直这样做)。这样,您无需执行任何特殊操作来跟踪应在何时显示哪个表单 - 您只需从任何地方打开一个表单,当该表单关闭时,您将自动返回到调用表单。

您必须处理一些 z 顺序/任务管理器的奇怪之处,但这并不是特别复杂。调用前ShowDialog在子窗体上,您设置父窗体的 Text属性为空字符串,然后在 ShowDialog 之后将其设置回表单的原始标题返回。这不是绝对必要的,但在 Windows Mobile(至少到版本 6)中,所有打开的 .Net 表单(具有非空白 Text 属性)都显示在 Running Programs 列表中,即使它们都来自同一个应用。我通常喜欢我的多表单应用程序看起来只是一个程序,所以我通常设置 Text每个表格的应用程序名称)。

我还试验了一个单一表单应用程序,该应用程序将 UI 的每一部分实现为 UserControl 而不是表单,然后创建和堆叠控件,就像您正在创建和打开表单一样。这有效,但它是一个黑客,我不推荐它。表单有一个 Load 事件而 UserControls 没有,这是主要问题。

关于.net - 紧凑型框架最佳实践 : Building a GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747548/

相关文章:

c# - Mercurial,使用 .NET api 编写 Hook

jQuery slideDown + CSS float

c# - 如何使用 SharpZipLib 提取或访问 gzip 中特定文件的流?

c# - LINQ:如果没有元素,All() 返回什么?

.net - 在 docker 容器中运行标准的 .NET 控制台应用程序

css - 重复访问者的 CSS Sprite 性能增益是多少?

java - Python - 集成 Java GUI 和 python 代码的最佳方式

c# - .NETCF 允许输入签名的组件

c# - 如何在 C# 中将视频转换为字节数组?

c# - 使用 `async` lambda 和 `Task.Run()` 是多余的吗?