使用大量控件加载大量UI的最佳方法

时间:2012-02-23 00:20:19

标签: c# winforms performance user-interface

我在Windows窗体应用程序中工作,它需要很多(我的意思是很多)控件。使用制表符控件来组织它们(有时是嵌套的制表符控件)。

我正在阅读如何更快地加载应用程序和如果真的需要控件,很多人会说三思而后行。好吧,说实话,我认为可以减少使用的控件数量,但客户要求这样做,所以我几乎无能为力。

我读到我应该使用多线程策略,但是存在硬件限制:应用程序必须在普通的neetbook上运行。这真的很痛苦,因为我在加载时间方面受到限制,而且我可以使用多少空间放置控件。

我想知道我是否可以在显示表单之前加载一个或两个标签,然后加载其他标签,这是可能的/正确/高效的吗?如果是,我怎么能实现它?我还计划使用MDI子项,但我需要在某些时候检索所有控件中的所有信息(绝对是所有选项卡和嵌套选项卡)。

你可以给我一些提示吗?你有从事类似工作的经验吗?

3 个答案:

答案 0 :(得分:3)

一种策略是创建主页,其中TabControl持有空TabPages。 然后,您可以设计多个辅助表单(每个TabPage一个),每个辅助表单包含一个Panel控件,其Public可见性(将Panel的Modifiers属性更改为{{1}保存您放在Public上的真实UI元素。

当用户单击空TabPage时,您创建辅助表单(您不显示它,只是创建它),然后访问辅助表单中的Panel控件,然后您可以将其重新显示给您空标签页,像这样

TabPage

这会延迟TabPage的控件创建,直到用户点击面板:) 希望这有帮助!

答案 1 :(得分:2)

  

我想知道我是否可以在显示表单之前加载一个或两个标签然后加载其他标签

您可以使每个“选项卡”包含UserControl,并在激活选项卡时按需加载UserControl。这至少会阻止你在启动时初始化所有内容。

答案 2 :(得分:1)

“许多控件”不是任何人都可以回答的要求。具有数千万行的下拉列表与具有数千个步骤且需要不同答案的向导UI完全不同。

为什么客户“以这种方式要求”?我们需要知道回答您问题的实际可交付要求。你有没有向他们展示替代品?

首先,发布一些模型。如果你还没有模型,请制作一些并用它们进行纸张测试,然后发布它们。

谁是“很多人”?测试人员吗?顾客?匿名论坛海报?将您的模型发布到https://ux.stackexchange.com/并征求意见。

“我可以在显示表单之前加载一个或两个标签页”?当然你可以这样做,但为什么你假设你的UI在你向我们展示任何要求之前会是“一两个标签”?获取需求,制作模型,然后询问具体的,可回答的问题。