这article表明.NET延迟了windows句柄的创建,但我找不到任何MSDN引用等来支持这一点。任何人都可以向我指出更多信息吗?
为了提高性能,.NET推迟了真实的创造 尽可能使用Win32窗口
答案 0 :(得分:1)
答案 1 :(得分:1)
是的,在绝对必要之前,不会创建本机窗口。当您将Form的Visible属性设置为true或调用其Show方法(同样的事情)时,通常会发生这种情况。或者,如果在构造函数中使用需要Handle属性有效的属性。这是罕见的,可能有点麻烦。 Winforms类都存储您指定的属性值(或设计器生成的代码分配),并且在创建本机窗口之前不会实际应用它们。
优化通常很轻微,但它可以对某些控件产生很大的影响。如果你在构造函数中给它们很多项,那么很好的例子是TreeView和ListView。延迟初始化将使用批量初始化消息获取基础本机Windows控件。而不是您添加的每个单独项目的消息。很大的区别。另请注意,在表单的Load事件处理程序中添加项目的常见做法会使此优化失败。总是喜欢构造函数。