写在前面:对于.Net的界面编程,特别是对原有的系统控件的重绘,经常会遇到OnPaint不能使用的问题,而事实上,OnPaint对于很多的系统控件都不能使用。在OnPaint不能使用的时候,就要使用WndProc方法了。这是一个捕捉Windows消息的方法,针对不同的Windows消息做不同的反应,如重绘消息时,重新画控件,就可以修改控件的外观。
效果图 ![]() 代码 public ComboBox() /// /// 重写WndProc方法 /// /// protected override void WndProc(ref Message m) { base.WndProc(ref m); if (this.DesignMode) return; if(m.Msg ==WM_PAINT) { Graphics g = Graphics.FromHwnd(Handle); DrawBoxBorder(g); g.Dispose(); } } /// /// 画ComboBox的边框 /// /// private void DrawBoxBorder(Graphics g) { Rectangle rect = this.ClientRectangle; if (this.Focused == false || this.Enabled == false) ControlPaint.DrawBorder(g, rect, _defaultColor, ButtonBorderStyle.Solid); else ControlPaint.DrawBorder(g, rect, _focusColor, ButtonBorderStyle.Solid); } } ControlPaint.DrawBorder与g.DrawRectangle |
Win32API 的使用实例
最新推荐文章于 2024-04-21 22:06:44 发布