通过拖放动态创建控件

时间:2011-04-19 12:58:31

标签: c# asp.net c++

通过拖放到表单中创建控件(图片框,按钮,文本框等)与在C#中为ASP.NET动态创建动态之间的性能,内存使用等之间是否存在任何差异? C ++?专业人士首选哪种方法?

5 个答案:

答案 0 :(得分:2)

当您进行拖放时,Visual Studio中的Designer实际上会为您生成代码,因此性能是相同的。我不建议动态地动态,除非你需要这样做。

答案 1 :(得分:1)

Visual Studio中的“拖放”只是为您创建代码。生成的可执行文件是由代码构建的,编译器不关心代码是由您个人,Visual Studio还是训练有素的猴子编写的。

是的,Visual Studio中的图形设计器可能会为您自己不会添加的HTML / ASP元素添加其他属性,但我怀疑它是否会产生可衡量的差异w.r.t.性能。

经验丰富的开发人员通常喜欢

  • 手工制作代码或
  • 使用图形设计器并仔细检查创建的代码(“分屏”视图对此非常有用)

因为不必要的属性会使代码难以维护。

答案 2 :(得分:1)

一般来说,专业人士通过编写代码来设计表单。 但是在运行时或编译时需要的控制实际上取决于情况或需要。所以这两种方法之间没有任何性能方面。

通常初学者应该通过对表单进行daragging和drop控制来设计表单,并且应该观察生成的代码。

答案 3 :(得分:1)

定义“动态”。

  • 如果“动态”表示手动编写标记并手动声明控件并将事件连接起来,则表示没有运行时性能差异。假设您手动正确创建了东西,编译结果是一样的。 (甚至可以通过手动创建尽可能少的功能来完成工作来略微提高性能,但这很少见,因为编译器非常擅长优化。我甚至无法想到一个例子。我的头脑。但是,基本上,手动创建代码并让Visual Studio创建代码都会产生相同的输出。
  • 如果“动态”表示在运行时实例化控件并在运行时将其连接起来,那么您可能会遇到性能损失。该框架再次非常善于保持高效。如果你完全反思,那么你可能会减慢一些事情。但总的来说,除非你试图让你的对象创建变得非常聪明,或者正在讨论那些毫秒级加快的高活动性网站,否则不会有太大的影响。

答案 4 :(得分:1)

就我所知的内存或性能而言,没有区别,但存在差异。例如,非动态控件(您引用的拖放)在Page.Init中实例化,而您动态添加的控件可能来自按钮单击,Page.Load等。

请注意初始化差异,以及ViewState is handled for dynamic controls

的方式