收藏,C# WinForm 用override CreateParams 来重载窗体的一些特性(慎用!!!)
来源:互联网 发布:膛线管55淘宝400元 编辑:程序博客网 时间:2024/06/05 10:23
窗体和控件的属性CreateParams(这真的是一个属性)很神奇,因为通过它你能够很方便的控制窗体或控件诸如边框、最大化最小化关闭按钮的隐藏、窗体的模式化弹窗模式等的一些特性。虽然,CreateParams有者如此巨大的潜力,但是在使用时要相当慎重,如果你不了解CreateParams这个属性的话,反而会是你在编写其他代码的时候非常疑惑。
引用MSDN中对CreateParams的说明:
在你开发的重载控件中不要重写这个属性,通过这个属性控制控件的某些风格。只有在你封装Windows控件或者想实现某些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切换闪屏问题时也可采用此种办法。
添加以下代码:
- 收藏,C# WinForm 用override CreateParams 来重载窗体的一些特性(慎用!!!)
- 重载 CreateParams 方法[2]: 重载 TForm.CreateParams 方法的几个例子
- 慎用CreateParms重载窗体属性
- c# winform 禁止窗体的一些操作(如最大化、最小化)
- 关于窗体(Windows Form)的CreateParams(属性或参数)的一点总结!
- c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值两种方法(1)
- c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值两种方法(2)
- c# winform窗体的组成
- C#窗体winform窗体皮肤的更换
- C# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
- c#的重写(override)和重载(overload)
- C# Winform 只打开Form窗体一次 (代码收藏)
- C# winform 窗体覆盖(遮住)系统任务栏 (代码收藏)
- C# winform 窗体覆盖(遮住)系统任务栏 (代码收藏)
- C# Winform 只打开Form窗体一次 (代码收藏)
- C# 重载(overload)与重写(override)
- WinForm窗体之间交互的一些方法(转)
- (41):慎用重载
- MATLAB中的Fdatool/Fvtool/Bertool简介
- Debug Assertion Failed ! List iterator not dereferencable
- android:打气筒功能View.inflate
- db2和oralce:用分析函数代替自连接
- viewpager即能实现滑动切换,又能点击切换的实现
- 收藏,C# WinForm 用override CreateParams 来重载窗体的一些特性(慎用!!!)
- SEO人员必学的关键词分析秘籍
- [51nod1594]Gcd and Phi
- android中intent详解
- TCP带外数据测试
- (Linux)文件系统管理
- RxJava响应式编程
- 1006. 换个格式输出整数 (15)
- JPA中屏蔽实体间外键