NET网页编程之C#控件的闪灼成绩办理办法总结
什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的)<p>比来对代码作了一些优化,实验后效果还能够,可是发明界面会闪灼,详细是TreeView控件会闪灼,言语为C#,IDE为VS2005。在查阅一些材料,利用了一些基础手艺后(如开启双缓冲),发明没甚么效果。因而利用Profiler工具,查找出瓶颈在于每次更新完界面的EndUpdate操纵(利用这个是为了削减界面更新次数,但这里不睬想是由于控件中中的元素良多),料想也许每次更新,.Net底层城市更新重绘每一个图元,以是速率会慢,形成闪灼。可是假如如许,利用双缓冲应当会有较好效果。再看代码,发明多是更新举措太甚频仍,因而下降速率,有所恶化,但仍是不可。
持续在网上查阅,终极找到一个计划对照符合。本来底层重绘每次会扫除画布,然后再全体从头绘制,这才是招致闪灼最次要的缘故原由。因而重载动静发送函数操纵,禁失落这条动静。代码以下:
<olclass="dp-c">protectedoverridevoidWndProc(refMessagem){if(m.Msg==0x0014)//禁失落扫除背景动静return;base.WndProc(refm);}
乐成!
注:双缓冲仍是有效的,在更新不是很频仍且控件内含元素不是出格多的时分。一旦元素过量,每次更新工夫都对照长,即使利用了双缓冲,仍办理不了闪灼成绩。团体以为终极对照幻想的办法仍是禁失落扫除背景动静。
附:一些实验过但失利的纪录
1)利用setStyle
网上有说利用setStyle函数往设置该控件的参数,详细为:
<olclass="dp-c">SetStyle(ControlStyles.UserPaint|ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer,true);
这三个选项参数后者是依附前者的,必需并存,不然有效。而且这个函数自己是protected的,以是起首必要承继某控件再利用。
这个方针是跟后面准确办理计划分歧,也是克制扫除背景并开启双缓冲,但必要利用用户绘制选项,并且是全体交由用户绘制。这必要本人完成控件的全体绘制,对照贫苦。以是这个办法不是完整不成行,可是必要分外事情量,不保举。我也没有利用。
2)利用BeginUpdate和EndUpdate
这一对操纵关于必要批量操纵更新控件的情形有对照好的效果,好比初始化时批量增加了大批节点。害处就在于不克不及立即更新。以是,关于频仍的更新节点并但愿当即反应到界面的情形不合用。假如利用而且没有禁失落扫除界面动静的话,则控件看起来就会一直的闪灼,并且以白底为主,内容几近不成见(这个视频仍水平而定)。由于界面更新都在EndUpdate处完成,操纵太多招致EndUpdate堵塞工夫太长,且清空在先,更新在后,招致界面看起来长工夫处于空缺形态。
3)利用ControlStyles.EnableNotifyMessage选项
这个选项的感化和准确办理计划也是分歧的。利用办法是:
<olclass="dp-c">SetStyle(ControlStyles.EnableNotifyMessage,true);protectedoverridevoidonNotifyMessage(Messagem){//此处誊写过滤动静代码}
可是实践实行显现有效果,不知是甚么缘故原由,没有细究。
<p>完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
页:
[1]