如何更快地打开winform?

时间:2012-02-27 08:22:26

标签: c# winforms

我有一个c#应用程序,并且有很多带控件的表单 每当我运行我的应用程序时,具有许多控件的表单打开速度很慢 那么有什么方法可以让它更快地开放?

7 个答案:

答案 0 :(得分:4)

从评论中可以看出,没有一种普遍的“让事情更快”的技术。你需要找到瓶颈并修复它。以下是一些提示:

  • 所有表单上的所有控件都是在设计器中静态添加的,还是在运行时根据环境/用户详细信息动态添加/通过反射动态加载?这些可能会显着减慢UI加载时间。

  • 您是否在单个表单上有数百个控件?如果是这样,请考虑将表单拆分为较小的块。

  • 您在Form_Load事件期间是否有复杂的逻辑或数据访问权限?这也会降低UI响应速度。考虑启动应用程序“clean”,然后异步加载数据。

  • 使用分析器!找一个好的,简单的分析器,看看你在哪里花费时间。你经常会对实际需要的时间感到惊讶。使用dotTraceAnts等良好的已建立的探查器的试用版,并考虑将来购买。

答案 1 :(得分:2)

如果您在表单构造函数中使用控件执行代码,或者在加载表单时执行某些操作,则可以在该代码之前编写 this.SuspendLayout(); this.ResumeLayout(); 那段代码之后。这可以防止几次耗时的布局操作。

答案 2 :(得分:1)

我建议您为用户提供更好的用户体验,而不是让它加载更快。

首先,首先加载Splash View(带加载进度)。在后台运行的后台线程中,使用大量控件加载View。当您的视图完全加载后,隐藏启动视图并显示您的视图。

答案 3 :(得分:0)

考虑到有问题的信息,我wolud说:

可能组中的Devide控件(用户几乎不可能同时需要所有控件 )并将它们放在单独的Tabs选项卡控件上。
自动(空间)仅加载fisrt Tab上的控件,而其他人则以动态方式加载它们。 在这种情况下,如果用户不需要某些功能,则永远不会切换到包含它的选项卡,因此将不会加载用户不需要的该功能的控件,这将提供整体加载时间更快。

如果有一个数据应该在控件上推送,请尽可能以异步方式加载,

希望这有帮助。

答案 4 :(得分:0)

我遇到过类似的问题,但控制权比你的多得多。
考虑到你有一组相对较小的控件,我认为罪魁祸首是数据访问层减慢了一切。 (例如,加载那些网格和组合)

可以告诉您很多事情的简单操作是将您的数据访问权移动到form_shown事件。

答案 5 :(得分:-1)

Visual Studios(在解决方案资源管理器下)中,您可以右键单击您的解决方案/解决方案名称并选择列表底部的属性。如果您选择“配置属性”,然后在配置下,您可以选择“发布”而不是“调试”。这将大大减少加载时间。 此外,避免在代码中使用“Thread.Sleep”是明智之举。这种方法经常使用,主要用于糟糕的代码编写者。大约 10% 在特定情况下是可行的,但我会不惜一切代价避免它。

答案 6 :(得分:-2)

最好的办法是将您的解决方案分成多层

YourAppUI contains forms
YourApp.Controls contains controls
YourApp.BLL contains business logic 
YourApp.DAL contains data access layer