C#仿QQ皮肤-DateTimePicker 控件实现

本文介绍了一种自定义实现DateTimePicker的方法,通过重写控件样式及行为来达到与系统DateTimePicker相似的效果,并提供了关键代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:http://www.sufeinet.com/thread-2094-1-1.html

       

大家还是先来看看效果吧


 

 

下面我们一起来看看是怎么样实现的


 这个暂时实现的比较简单一些,我只是给他加了一个外衣,其它的基本没有动,就是现在看到的效果,点开之后是和系统是控件DateTimePicker一个样子,呵呵

      所以我在这里就不在多说什么了,实现 的很不进如人意,我会慢慢更新的,在这里只是先把代码放在这里,大家感觉那里不合适的可以帮助我改动一下,感谢

 

1.怎么样实现的上图效果

 

代码
   public   void  ResetBitmap()
        {
            
this .NormalImage  =  Shared.NomalDrawButton;
            
this .MouseDownImage  =  Shared.MouseDownDrawButton;
            
this .MouseMoveImage  =  Shared.MouseMoveDrawButton;
        }

        
protected   override   void  OnValueChanged(EventArgs eventargs)
        {
            
base .OnValueChanged(eventargs);
            
this .Invalidate();
        }  
private   void  OverrideDropDown(Graphics g)
        {
            
// if (!this.ShowUpDown)
            
// {
            Rectangle rect  =   new  Rectangle( this .Width  -  DropDownButtonWidth,  0 , DropDownButtonWidth,  this .Height);
            
// ControlPaint.DrawComboButton(g, rect, ButtonState.Flat);
            
// }
            g.FillRectangle( new  SolidBrush(Color.White), rect);

            
if  ( this .Enabled)
            {
                
if  (_mouseEnter)
                {
                    g.DrawImage(
this .MouseMoveImage,  new  Rectangle( this .Width  -   20 3 16 16 ));
                }
                
else
                {
                    g.DrawImage(
this .NormalImage,  new  Rectangle( this .Width  -   20 3 16 16 ));
                }
            }
            
else
            {
                g.DrawImage(Shared.NotEnableDrawButton, 
new  Rectangle( this .Width  -   20 3 16 16 ));
            }
        }

 

 

2.时间和日期绘制

..................

3.几个常用事件的处理

..................

 

 

下面是程序所有代码


 

 

 原文:http://www.sufeinet.com/thread-2094-1-1.html

 

 

版本号:V2.3 发布时间:2015.04.12 更新内容: 1、新增DelphiXE8版本 2、新增TMlSkinLine组件 3、新增TMlSkinMessageBoxStyle组件(可以用来设置MlMessageBox的显示风格) 4、新增TMlSkinSplitter组件 5、新增TMlSkinDatetimePicker组件(选择日期时间的组件) 6、TMlSkinEdit增加ShowCheckBox属性 7、新增:仿360云盘 Demo 8、修正当TMlSkinGroupBox的字体变大后,CaptionHeight设置无效的问题 9、修正某些情况下TMlFormLayerBorder边框显示时会出现白框的问题 10、修正在使用TMlSkinMenu后,某些时候,菜单上的Png图标无法透明显示的问题 11、修正TMlSkinPageControl动态创建后,在Free时Sheet时会报错的问题 12、修正MlSKinNCButton 默认设置为DOWN=TRUE的时候,运行后需要鼠标移动到按钮上面触发一下,才会显示为DOWN的状态问题 13、修正MlSkinProgressbar的当Value超出范围后会报错的问题 14、修正在删除TMlSkinListView的Scroolbar组件时,会引起IDE报错的问题 15、修正因为TMlSkinForm.MainMenu属性在某些情况下会引起Delphi IDE报错的问题 16、修正TMlSkinGroupBox某些时候会出现黑边的问题 17、MlSkinPageControl 添加DisableFont属性 18、MlSkinEdit.Space.Active = False时,自动设置文本为垂直居中对齐 19、修正MlSkinEdit因为设置了MaxLength属性,在选中里面文本后,文本不能被删除的问题 20、TMlSkinExpandBox新增AllowCollapse属性(为False时,“折叠”操作无效) 21、修正了MlSkinMemo.Align=alClient时,在窗体最大化会报错的问题 22、修正几处因为其它组件引起的部分MlSkin容器组件颜色显示异常的问题 23、其它小的改动和调整
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值