关于窗体(Windows Form)的CreateParams(属性或参数)的一点总结!

         我们如果使用过MFC的人都知道,其实CreateParams是封装创建控件时需要的信息,也就是它是CreateWindowEx的参数,重写它就可以设置控件创建时的样式.由此很多人在开发时不满足当前窗体的样式时,往往就想到要重写这个了,有过MFC或MFC项目经验的同学都知道,创建一个窗体里有一个受保护(protected)的属性(CreateParams,这个属性一般被封装保护的),由此当不满足Microsoft提供的默认样式时就可以重写它,通过如下情形进行说明

        1,如果Winform中某个控件(窗体)只提供有横向摆放设置而无竖直摆放设置怎么办?如Winform的ProgressBar,我想用它来表示平板中的电量怎么办?

              我们可以通过继承并重写出一个新的控件就可以解决问题如:

              class VerticalProgressBar: System.Windows.Forms.ProgressBar
             {
                   protected override CreateParams CreateParams
                   {
                     get
                     {
                        var param = base.CreateParams;
                       param.Style |= 0x04;//每个样式的值,大家可以参考MS的结构定义!MFC熟悉的同学都知道,这个是按位组加的哦。后面我会给出微软的几个官方链接,方便大家查阅!
                        return param;
                    }
                  }
             }

         2,如创建无标题的窗体或边框添加阴影等,这个在我的一些项目中需求还是非常大的。怎么办?

          无标题:把如上get{}部分改为:(这时要重载窗体的CreateParams哦)
          int WS_CAPTION = 0xC00000;
          int WS_BORDER = 0x800000;
          var param = base.CreateParams;
          param.Style &= ~WS_CAPTION | WS_BORDER;
          return param;

          阴影:把如上get{}部分改为:(这时要重载窗体的CreateParams哦)
          var param = base.CreateParams;
          param.ClassStyle |= 0x20000;
          return param;

          等等,其实,如果想改变窗体创建时默认样式(指通过公开属性无法修改的)那我们就可以重写窗体的这个属性了,同时在一些高级编程很多时候也需要用到Winform的功能重用问题,如只想要一个窗体(对象)的事件而不想看到它怎么办?其实base.Visible=false就可以了,这个时候,窗体的机制可以隐形操作一个对象来使用了。

        另外,除了通过重写CreateParams外,还可以重写(如重写原来的参数机制、执行机制等等)一个控件受保护的其它,有时间再总结了。      

         好了,该休息了,明天早起忙钓鱼去!-_-!

  

         如上的CreateParams.Style(CREATESTRUCT)的参数链接为:

         英文的:  Window Styles     中文的:https://msdn.microsoft.com/zh-cn/library/czada357.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值