博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# CreateParams的使用(解决闪屏问题)
阅读量:5237 次
发布时间:2019-06-14

本文共 1580 字,大约阅读时间需要 5 分钟。

 <转载自:https://blog.csdn.net/xpwang/article/details/53427479>

  窗体和控件的属性CreateParams(这真的是一个属性)很神奇,因为通过它你能够很方便的控制窗体或控件诸如边框、最大化最小化关闭按钮的隐藏、窗体的模式化弹窗模式等的一些特性。虽然,CreateParams有者如此巨大的潜力,但是在使用时要相当慎重,如果你不了解CreateParams这个属性的话,反而会是你在编写其他代码的时候非常疑惑。

  引用MSDN中对CreateParams的说明:  

  在你开发的重载控件中不要重写这个属性,通过这个属性控制控件的某些风格。只有在你封装控件或者想实现某些WinForm没有提供的风格(比如Layered Window)控制的时候再使用这个属性。更多信息请参照MSDN上对CreateWindow方法和CreateWindowEx方法的参数CREATESTRUCT结构体的文档注释 。

  简述为何CreateParams能够实现这样高级的样式控制,因为从CreateWindow和CreateWindowEx的名字就可以看出,CreateParam是传递给这方法的参数,而这两个方法又是在窗体创建的时候调用的。所以,CreateParam才能够实现如此强大的样式控制。

  在net开发winform的过程中,我们有时需要对form窗体做一些特殊的设置,比如:

    隐藏主窗体,只显示右下角的任务栏图标
    上面的“隐藏主窗体”,有多种实现方式,但最为完美和彻底的方法,就是重写基类窗体的CreateParams事件,来实现。

protected override CreateParams CreateParams        {            get            {                base.Visible = false;                return base.CreateParams;            }        }

上面的代码,就是实现方式,非常简单有效,调试运行,不会看到一个窗体(因为窗体的Visible属性设置成了false,即窗体不可见)。但是,窗体的事件Form_Load, Form_Shown, Form_Paint 等是依旧可以使用的。

再如:

  防止WinFrom切换闪屏问题时也可采用此种办法。 

   添加以下代码:

 

// 防止闪屏          protected override CreateParams CreateParams          {              get              {                  CreateParams cp = base.CreateParams;                  cp.ExStyle |= 0x02000000;                  return cp;              }          }

 

-------------------------------------------------------------------------------------------------

我使用此方法解决了闪屏问题。刚开始是我是在每一个窗体中添加此代码,但是后来发现其实他们引用的都是重写后的相同的类:CreateParams,所以只需在主界面的后台代码中写下这段代码,即在程序运行初始该方法已经重写,其他的界面就无需再重写这段代码了。

 

转载于:https://www.cnblogs.com/Alex1994/p/10393845.html

你可能感兴趣的文章
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
递归函数,二分运算,正则表达式
查看>>
Flutter之内置动画(转)
查看>>
MySql优化相关概念的理解笔记
查看>>
数据库解决方案
查看>>
DataContract和DataMember的作用
查看>>
js如何获取response header信息
查看>>
python_文件的打开和关闭
查看>>
ADO.NET介绍
查看>>
iOS: 数据持久化方案
查看>>
【C#】【Thread】Monitor和Lock
查看>>
UVALive - 3635 - Pie(二分)
查看>>
集合类List,set,Map 的遍历方法,用法和区别
查看>>
Scala入门系列(十):函数式编程之集合操作
查看>>
pulseaudio的交叉编译
查看>>
Cracking The Coding Interview 1.1
查看>>
vb.net 浏览文件夹读取指定文件夹下的csv文件 并验证,显示错误信息
查看>>
NetworkInterface的使用
查看>>
元素自动居中显示
查看>>
JDBC 时间处理
查看>>