本帖最后由 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);
}
}
就改为下面那种样式了 ,实际上就是上下各添加了一张图片,加了一个边框而已。现在的问题是当鼠标滑过 还有点击右侧的上下按钮时 之前的样式又会显出出来,如图所示
我该怎么解决这个问题,才能让他一直保持
这种样式呢 谁知道解决方案呀 谢谢!
|