【问题标题】:Best way to load a heavy UI with lots of controls加载带有大量控件的繁重 UI 的最佳方式
【发布时间】:2012-03-13 09:41:12
【问题描述】:

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

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

我读到我应该使用多线程策略,但有一个硬​​件限制:应用程序必须在普通上网本上运行。这真的很痛苦,因为我在加载时间和可以用来放置控件的空间方面受到限制。

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

你能给我一些建议吗?您有从事类似工作的经验吗?

【问题讨论】:

    标签: c# winforms performance user-interface


    【解决方案1】:

    一种策略是使用TabControl 保留空白TabPages 创建您的主页。 然后你可以设计几个辅助表单(每个TabPage你需要一个)每个都包含一个Panel控件和Public可见性(将面板的Modifiers属性更改为Public)保存你真正的UI元素会放在TabPage

    当用户点击空的TabPage,然后你创建辅助Form(你不显示它,只是创建它),然后访问辅助Form中的Panel控件,然后你可以将它reparent到你的空标签页,像这样

    AuxForm1 frm = new AuxForm1();
    frm.MainPanel.Parent = this.tabControl1.TabPages[0];  
    

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

    【讨论】:

      【解决方案2】:

      我想知道是否可以在显示表单之前加载一两个选项卡,然后再加载其他选项卡

      您可以使每个“选项卡”都包含一个用户控件,并在激活选项卡时按需加载该用户控件。这至少可以防止您在启动时初始化所有内容。

      【讨论】:

        【解决方案3】:

        “大量控制”不是任何人都可以回答的要求。具有数千万行的下拉列表与具有数千个步骤并需要不同答案的向导 UI 是一个非常不同的问题。

        为什么客户“这样要求”?我们需要知道实际的交付要求才能回答您的问题。你向他们展示了替代方案吗?

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-26
          • 2011-07-19
          • 2018-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多