CSkin博客

标题: winform NumericUpDown控件右侧的上下箭头怎么重绘改变其样式? [打印本页]

作者: Ashin_DNA    时间: 2016-12-30 13:41
标题: winform NumericUpDown控件右侧的上下箭头怎么重绘改变其样式?
本帖最后由 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);

            }

        }

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

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




作者: 乔克斯    时间: 2017-1-17 11:45
www.cskin.net
直接用cskin里面的skinNumericUpDown吧。。里面可以控制色调。或者自己弄2个按钮+文本框组装个。




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2