当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁、重影等问题,如下图所示:

在网上搜索过该问题,大部分都说使用双缓冲可以解决此类问题,即通过设置DoubleBuffered属性来减少图形的闪烁。

public Frm_DataSel()//窗体构造函数
{
InitializeComponent();
this.DoubleBuffered = true;//设置本窗体
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
}

但是我使用上述代码进行尝试之后,发现问题依然存在,并没有解决。

因此,本随笔可用作使用双缓冲之后依然没有解决问题的小伙伴进行查看和试验。

具体的解决方案是通过设置CreateParams的ExStyle为ExStyle  为 0x02000000 (WS_EX_COMPOSITED)。

 1      /// <summary>
2 /// 解决页面频繁刷新时界面闪烁问题
3 /// </summary>
4 protected override CreateParams CreateParams
5 {
6 get
7 {
8 CreateParams cp = base.CreateParams;
9 cp.ExStyle |= 0x02000000;
10 return cp;
11 }
12 }

在添加上述代码之后,页面果然几乎看不到闪烁了,重影问题也消失了

2020-12-01

yoga

参考文章:

http://www.360doc.com/content/20/0418/16/17167475_906853862.shtml

C#中的WinForm问题——使用滚动条时页面闪烁及重影问题的更多相关文章

  1. 防止HTML出现滚动条时页面的抖动

    <html> <style> * { padding: 0; margin: 0; } body { font: 40px fantasy; } .container { wi ...

  2. java中Double类数字太大时页面正常显示而不要用科学计数法

    /** * 当浮点型数据位数超过10位之后,数据变成科学计数法显示.用此方法可以使其正常显示. * @param value * @return Sting */ public static Stri ...

  3. WinForm中当TextBox重新获得焦点时输入法失效问题

    在winform 中,每当TextBox获得焦点时,部分输入法会失效(如智能ABC.五笔98.极品五笔等),需要重新切换输入法才能正常使用. 此时要将Form的ImeMode属性改为:OnHalf(或 ...

  4. 页面加载时,页面中DIV随之滑动出来;去掉页面滚动条

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  5. 在WPF中使用WinForm控件方法

    1.      首先添加对如下两个dll文件的引用:WindowsFormsIntegration.dll,System.Windows.Forms.dll. 2.      在要使用WinForm控 ...

  6. Bootstrap3-技巧之解决Bootstrap模态框切换时页面抖动 or页面滚动条

    Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置body -- overflow:hidden;margin-right:15px; ...

  7. 解决Bootstrap模态框切换时页面抖动 or页面滚动条

    Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置body -- overflow:hidden;margin-right:15px; ...

  8. C# 中对WinForm窗体中的控件快速设置TableIndex次序

    点击“视图”--“Tab键顺序”,然后便可设置.

  9. [转]在WPF中使用WinForm控件方法

    本文转自:http://blog.csdn.net/lianchangshuai/article/details/6415241 下面以在Wpf中添加ZedGraph(用于创建任意数据的二维线型.条型 ...

随机推荐

  1. Win10 Terminal + WSL 2 安装配置指南,精致开发体验

    自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了.主要是 Terminal 简洁且灵活,更重要的是支持特殊字体,通过一些简单的配置可以使得终端看起来更舒 ...

  2. LWJGL3的内存管理,第二篇,栈上分配

    LWJGL3的内存管理,第二篇,栈上分配 简介 为了讨论LWJGL在内存分配方面的设计,本文将作为该系列随笔中的第二篇,用来讨论在栈上进行内存分配的策略,该策略在 LWJGL3 中体现为以 Memor ...

  3. Spring框架之beans源码完全解析

    导读:Spring可以说是Java企业开发里最重要的技术.而Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programmin ...

  4. c++11-17 模板核心知识(二)—— 类模板

    类模板声明.实现与使用 Class Instantiation 使用类模板的部分成员函数 Concept 友元 方式一 方式二 类模板的全特化 类模板的偏特化 多模板参数的偏特化 默认模板参数 Typ ...

  5. 内网渗透 day12-免杀框架2

    免杀框架2 目录 1. IPC管道连接 2. 查看wifi密码 3. Phantom-Evasion免杀框架的运用 4. 自解压(sfx) 5. 数字签名 6. 资源替换 1. IPC管道连接 命名管 ...

  6. 使用python和numpy实现函数的拟合

    给出一个数组x,然后基于一个二次函数,加上一些噪音数据得到另一组数据y. 将得到的数组x,y,构建一个机器学习模型,采用梯度下降法,通过多次迭代,学习到函数的系数.使用python和numpy进行编程 ...

  7. 手写简易React-Fiber

    1.首先创建createElement函数 1 function createElement ( 2 type, 3 config, 4 ...children 5 ) { 6 7 const pro ...

  8. python之路《七》文件的处理

    其实我觉得python的方便之处就是简便特别是对数据的处理上 当我们要处理一些数据的时候免不了的就是要处理许多的文件那么下面就让我们来看一下文件的处理 1.打开文件 python的文件打开方式较为简单 ...

  9. rbd的删除回收站功能

    前言 rbd 提供了一个回收站功能,这个是属于防呆设计,防止误操作删除rbd引起无法恢复的情况,rbd正常情况下的删除是马上会在后台回收空间的,这个也听说过有人做过误删除的操作,那么这个设计就是从操作 ...

  10. LeetCode 中等题解(3)

    34 在排序数组中查找元素的第一个和最后一个位置 Question 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂 ...