winform上控件太多,绘制时会逐个出现,通常说双缓冲能解决但实际不能解决的问题的解决方法。
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; return cp; }
}
接着找办法解决500多个控件PAINT缓慢的效能问题,心塞。
分类都不想分了,就这样。
--update 2014/7/14
CreateParams,xp下,cpu会满负荷。
--update 2014/7/15
1. 重载CreateParams能让控件重绘提速。所以然待究。然,Vista以下操作系统会出现CPU满载。因此
protected override CreateParams CreateParams
{
get
{
if( Environment.OSVersion.Version.Major >= 6 )
{
// Vista以上
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
else
{
return base.CreateParams;
}
}
}
2. 控件们重新布局的时候比较讨厌,如果嵌套层数很多,西夏普必须将每个控件挂起,suspendLayout,一个简便的方法是用API直接给最外层发禁止绘制,和取消禁止绘制,然后手动refresh。手动,当然是码动的意思。
[System.Runtime.InteropServices.DllImport( "user32" )]
private static extern int SendMessage( IntPtr hwnd, int wMsg, int wParam, IntPtr lParam );
private const int WM_SETREDRAW = 0xB; private void RefreshYourCtrl()
{
SendMessage( yourCtrl.Handle, WM_SETREDRAW, 0, IntPtr.Zero );//禁止重绘 // 重新布局 SendMessage( yourCtrl.Handle, WM_SETREDRAW, 1, IntPtr.Zero );//取消禁止
yourCtrl.Refresh();
}
3. 双缓冲对多控件多嵌套基本没啥效果。
还是API好使。
winform上控件太多,绘制时会逐个出现,通常说双缓冲能解决但实际不能解决的问题的解决方法。的更多相关文章
- winform上控件的拖拽小结
这里罗列出几个相关的事件和属性,具体的实现介绍已有非常优秀的文章了,文章末尾我将会给出,大家可以去参考. 属性: AllowDrop: 目标控件必须设定为true,才能接受拖拽来的东西. 事件: It ...
- Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目
前言:因为这段时间要接触到DevExpress控件库,而我本身甚至对winform的控件都了解甚少,所以处在学习中,写下博客主要是为了方便后期的回顾,当然也可以给一些新人第一次接触时做为学习的参考,以 ...
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- C# Winform WebBrowser控件
C# WinForm WebBrowser 1.主要用途:使用户可以在窗体中导航网页. 2.注意:WebBrowser 控件会占用大量资源.使用完该控件后一定要调用 Dispose 方法,以便确保及时 ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- C#实现WinForm DataGridView控件支持叠加数据绑定
我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...
- WinForm给控件加入hint文字
本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...
- C# WinForm实现控件拖动实例介绍
主要是设计控件的MouseDown.MouseLeave.MouseMove事件.一步步来吧:1.定义一个枚举类型,描述光标状态 private enum EnumMousePointPosition ...
- 双缓冲绘图和窗口控件的绘制——ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 .
双缓冲绘图和窗口控件的绘制 ---ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 cheungmine 我们通常使用ATL COM组件,生成一个带窗口的ActiveX控件,然后 ...
随机推荐
- SEO优化
SEO是由英文Search Engine Optimization缩写而来, 中文意译为“搜索引擎优化”.SEO是指从自然搜索结果获得网站流量的技术和过程,是在了解搜索引擎自然排名机制的基础上, 对网 ...
- ruby on rails 安装
第一种方案: 1. 下载ruby Ruby21-x64 2. 1 gem sources --remove http://rubygems.org 2. 2 gem sources -a htt ...
- WordPress
WordPress: 1.一种使用PHP语言开发的博客平台 2.用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站 3.也可以把 WordPress当作一个内容管理系统(CMS)来使用 ...
- 回文数组(Rotate Array (JS))
旋转一个数组. function rotate(array,n){ var l =array.length,a=array.map(function(x){return x}),arr=[]; n=n ...
- 开源框架中常用的php函数
类的自动加载后直接实例化 //自动加载类 function my_autoloader($class) { include $class . 'Class.php'; } spl_autoload_r ...
- 开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供) 【转】
国家气象局提供的天气预报接口 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data ...
- cocos2dx 之 android java 与 c++ 互相调用 代码(以百度定位为例子)
在作cocosdx项目移植到android上时,预见各种头痛问题,今天首先就说说如何在 java 中调用c++ 代码. 这里就用百度定位为例吧,也是我项目中的一小块内容.首先,先百度一下 “百度定位s ...
- NOPI Excel插件导入导出 图片批注
dateTable导出到excel的MemoryStream /// <summary> /// DataTable导出到Excel的MemoryStream Export() /// & ...
- CSS3中:nth-child和:nth-of-type的区别深入理解。 关于:nth-child和:nth-of-type的区别之前一直没太注意,经深入理解才发现里面其实暗藏玄机
关于:nth-child和:nth-of-type的区别之前一直没太注意.最近打算深入了解一些CSS3,才发现里面其实暗藏玄机. :nth-child可以选择父元素下的字元素,:nth-of-type ...
- 如何成为python高手
本文是从 How to become a proficient Python programmer 这篇文章翻译而来. 这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关 ...