Winform下无闪烁走马灯效果实现

最近需要在Winform项目中实现一个走马灯的效果,一开始用了一些办法比如移动Label控件,效果总是不太好,移动文本时总有闪烁的现象。后来找了一个国外的开源控件,应用了一下,效果还不错。仔细阅读了一下代码,发现还有一些地方值得改进,现把代码以及改动说明贴出来,和大家分享。

控件出处:http://www.codeproject.com/KB/miscctrl/ScrollingTextControlArtic.aspx

我的改动:

1、DoubleBuffer 的设置

原代码中用的是 this.SetStyle(ControlStyles.DoubleBuffer, true); 但一些网友反映这个标志在.net 2.0 以上版本无效。说句老实话,我也不是特别确信,MSDN上也没有说明这一点。在我的.net 2.0 系统中,两种设置的效果似乎没有太多区别。在一个国外网站上找到他们的区别,下面是原文:

ControlStyles == CS

AllPaintingInWMPaint == APWMP

OptimizedDoubleBuffer = ODB

DoubleBuffer = DB

An earlier permutation of the design called for ODB to simply be a combinationof DB, APWMP and UserPaint. Through several design changes, the two control styles are nearly synonymous, but they still have differences. Now that we've broken that, we may considerun-deprecating CS.DB to retain . Here is a more complete summary of the current design:

Mechanism Side effects Other flags required to work Require APWMP? Notes
ControlStyle

.DB

none APWMP, UserPaint Yes We are considering NOT deprecating this flag because ODB isn't an exact replacement for DB.
ControlStyle

.ODB

none none No Works, but without APWMP set you'll buffer foreground and background separately and will still see flicker.
Control

.DoubleBuffered

sets CS.ODB, CS.APWMP none No Works for most mainstream buffering needs. Getter is peculiar in that it only checks CS.ODB.
时间: 2024-10-26 05:47:59

Winform下无闪烁走马灯效果实现的相关文章

Winform 下无闪烁走马灯效果实现

Winform 下无闪烁走马灯效果实现 作者:肖波    最近需要在Winform项目中实现一个走马灯的效果,一开始用了一些办法比如移动Label控件,效果总是不太好,移动文本时总有闪烁的现象.后来找了一个国外的开源控件,应用了一下,效果还不错.仔细阅读了一下代码,发现还有一些地方值得改进,现把代码以及改动说明贴出来,和大家分享.    控件出处:http://www.codeproject.com/KB/miscctrl/ScrollingTextControlArtic.aspx     我

javascript-jquery为动态插入的checkbox绑定事件在IE8下无效果

问题描述 jquery为动态插入的checkbox绑定事件在IE8下无效果 //obj是checkbox对象,这些checkbox都是通过js方法动态插入html的 obj.click(function(){ var valueStr=""; var nameStr=""; // initObjs是所有的checkbox对象集合 initObjs.filter(":checkbox[name='"+name+"']:checked&qu

《HTML5 开发实例大全》——1.7 实现下拉弹出效果

1.7 实现下拉弹出效果 实例说明 在本实例中,首先在页面中显示一行提问文本"需要在线咨询吗?".当单击左侧的小三角符号后,将在下方无刷新弹出一个下拉区域,在里面显示文本"非常"需要.上述描述效果在很多动态网站中比较常见,原来一般都是用JavaScript技术或Ajax技术实现的.但现在只需使用HTML 5中的< details >标记元素即可实现完全同样的功能. 具体实现 使用Dreamweaver创建一个名为"007.html"的

Ajax实现无闪烁定时刷新页面实例代码_AJAX相关

在Web开发中我们经常需要实现定时刷新某个页面: 1.来保持session的值或者检查session的值是否为空(比如说防止同一用户重复登录): 2.实现实时站内短信: 3.定时更新页面数据等等.但是我们在网上搜搜会发现有很多定时刷新页面的方法,最简单的就是在<head></head>标记之间加上如下代码: 在<head></head>标记之间加上代码,实现定时刷新,此代码我已经测试过,可以实现效果 <meta http-equiv="ref

jQuery实现图片走马灯效果的原理分析_jquery

本文实例分析了jQuery实现图片走马灯效果的原理.分享给大家供大家参考,具体如下: 这里只讲解水平走马灯效果,垂直向上走马灯效果不讲解,原理一样,但是水平走马灯效果有一个小坑.待会讲解 先上代码: HTML: <div class="box"> <div style="width: 1000px;" id="boxdiv"> <ul> <li style="display: block;&qu

winform 下HttpWebRequest 和xmlhttp去下载网页.哪个好?

问题描述 希望从各方面说说. 解决方案 解决方案二:httpwebrequest是.netframework中的方法,支持Cookies,Session等,这个我用过Microsoft.XMLHTTP是一个独立的组件,可以在js等各种语言里调用,这个没太用过就不评论了.如果你想用httpwebrequest的话,我这有封装好的类库和源代码,简化了很多操作http://blog.zhaoyu.me/archives/142.shtmlHTTPRequestrequest=newHTTPReques

初次使用C#做项目,请问WinForm下将项目分解成多个DLL,这样是不是能节约内存啊!

问题描述 是这样的,小弟在做一个C#项目项目,WinForm的,原来打算在进入系统的时候使用ListView组件,本来打算每点击一个ListView项目,弹出一个操作窗口,进行相应的操作,一共有50多个项目,小弟我设计了50个窗体文件,进行静态编译成一个项目后,发现占用了很多内存,现在我想问:1)如果我做成50个DLL(DLL也是C#开发的托管的那种)来封装相应的窗体操作,这样在启动项目之后,当我点击ListView条目的时候从DLL文件中寻找,我想问的是,这样会不会节约我的内存占用?2)这样做

简单实现Ajax无刷新分页效果

Ajax无刷新分页效果,如下代码实现 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax无刷新分页效果</title> <script type="text/javascript"> function showpage(url) { var xhr = new XML

Ajax实现无闪烁定时刷新页面实例代码

在Web开发中我们经常需要实现定时刷新某个页面: 1.来保持session的值或者检查session的值是否为空(比如说防止同一用户重复登录): 2.实现实时站内短信: 3.定时更新页面数据等等.但是我们在网上搜搜会发现有很多定时刷新页面的方法,最简单的就是在<head></head>标记之间加上如下代码: 在<head></head>标记之间加上代码,实现定时刷新,此代码我已经测试过,可以实现效果 <meta http-equiv="ref