作者: Ashin_DNA
查看: 2574|回复: 1
打印 上一主题 下一主题

[求助] winform NumericUpDown控件右侧的上下箭头怎么重绘改变其样式?

[复制链接]
跳转到指定楼层
楼主
Ashin_DNA 发表于 2016-12-30 13:41:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
查看: 2574|回复: 1
本帖最后由 Ashin_DNA 于 2016-12-30 13:44 编辑

我已经把原生的变成下面这种样式了,
就新建了一个类 继承了public partial class MyNumericUpDown : NumericUpDown

然后在WndProc方法里面改


   protected override void WndProc(ref Message m)        {
            base.WndProc(ref m);
            //WM_PAINT = 0xf; 要求一个窗口重画自己,即Paint事件时   
            //WM_CTLCOLOREDIT = 0x133;当一个编辑型控件将要被绘制时发送此消息给它的父窗口;     
            //通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色;
            if (m.Msg == 0xf || m.Msg == 0x133)
            {

                IntPtr hDC = GetWindowDC(m.HWnd);
                if (hDC.ToInt32() == 0)//如果取设备上下文失败则返回
                {

                    return;
                }
                Graphics g = Graphics.FromHdc(hDC);
                g.DrawImage(Properties.Resources.mynumericupimg, Width - 17, 0);
                g.DrawImage(Properties.Resources.mynumericdownimg, Width - 17, 11);
                ControlPaint.DrawBorder(g, new Rectangle(0, 0, Width, Height), Color.FromArgb(127, 157, 185), ButtonBorderStyle.Solid);
                //释放DC
                ReleaseDC(m.HWnd, hDC);

            }

        }

就改为下面那种样式了 ,实际上就是上下各添加了一张图片,加了一个边框而已。现在的问题是当鼠标滑过 还有点击右侧的上下按钮时 之前的样式又会显出出来,如图所示

我该怎么解决这个问题,才能让他一直保持   
        
这种样式呢  谁知道解决方案呀 谢谢!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播
回复 论坛版权

使用道具 举报

沙发
乔克斯 发表于 2017-1-17 11:45:25 | 只看该作者
www.cskin.net
直接用cskin里面的skinNumericUpDown吧。。里面可以控制色调。或者自己弄2个按钮+文本框组装个。
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-4-27 03:00, Processed in 0.641765 second(s), 32 queries , Gzip On.

快速回复 返回顶部 返回列表