TableLayoutPanel对事件响应很慢在我的应用程序中,我确实需要放置很多控件(标签、文本框、domainupdown)。所以我继续使用了一些嵌套的TableLayoutPanel。现在的问题是此表单对大多数事件(调整大小、最大化、最小化和...)的响应非常缓慢,表单中的控件实际上需要5秒来调整大小、重新绘制到新的表单大小。我现在把手指放在眼睛里!如果表格在我的家用电脑(i7@4GHz和一个好的显卡)上运行缓慢,它能在旧的P4电脑上运行吗?我什至尝试使用下面的代码,但它绝对没有任何作用,如果它不减慢更多的话!privatevoidFilterForm_ResizeBegin(objectsender,EventArgse){foreach(TableLayoutPaneltlpinpanelFilters.Controls){if(tlp!=null){tlp.SuspendLayout();}}}privatevoidFilterForm_ResizeEnd(objectsender,EventArgse){foreach(TableLayoutPaneltlpinpanelFilters.Controls){if(tlp!=null){tlp.ResumeLayout();请告诉我是否有使tablelayoutpanel工作得更快的技巧……或者您是否知道一种更好的方法来放置大约数百个对齐良好的控件。使用此代码。公共类CoTableLayoutPanel:TableLayoutPanel{protectedoverridevoidOnCreateControl(){base.OnCreateControl();this.SetStyle(ControlStyles.OptimizedDoubleBuffer|ControlStyles.CacheText,true);}protectedoverrideCreateParamsCreateParams{get{CreateParamscp=base.CreateParams;cp.ExStyle|=NativeMethods.WS_EX_COMPOSITED;返回cp;}}publicvoidBeginUpdate(){NativeMethods.SendMessage(this.Handle,NativeMethods.WM_SETREDRAW,IntPtr.Zero,IntPtr.Zero);}publicvoidEndUpdate(){NativeMethods.SendMessage(this.Handle,NativeMethods.WM_SETREDRAW,newIntPtr(1),IntPtr.Zero);父母无效(真);}}publicstaticclassNativeMethods{publicstaticintWM_SETREDRAW=0x000B;//uintWM_SETREDRAWpublicstaticintWS_EX_COMPOSITED=0x02000000;[DllImport("user32.dll",CharSet=CharSet.Auto)]publicstaticexternIntPtrSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,IntPtrlParam);//UInt32Msg}如果您创建一个派生自TableLayou新建tPanel类,将ControlStyles设置为DoubleBuffered为true,那么你的性能会有明显提升更多关于C#的学习教程,希望大家多多关注—publicclassMyPanel:TableLayoutPanel{publicMyPanel(){this.SetStyle(ControlStyles.DoubleBuffer,真);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
