如题,代码如下 public partial class myComboBox : System.Windows.Forms.ComboBox { [System.Runtime.InteropServices.DllImport("user32.dll")] static extern IntPtr GetWindowDC(IntPtr hWnd); [System.Runtime.InteropServices.DllImport("user32.dll")] static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
public myComboBox() : base() { this.FlatStyle = FlatStyle.Flat; }
protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == 0xf || m.Msg == 0x133) //拦截系统消息 { IntPtr hDC = GetWindowDC(m.HWnd); if (hDC.ToInt32() == 0) { return; }
Graphics g = Graphics.FromHdc(hDC);
//边框 Rectangle rect = new Rectangle(0, 0, Width, Height); ControlPaint.DrawBorder(g, rect, Color.DarkGray, ButtonBorderStyle.Solid);
m.Result = IntPtr.Zero; //返回结果 ReleaseDC(m.HWnd, hDC); //释放重绘ComboBox控件,为什么文本框中下面有条粗黑线 } } }
运行时在Win2000没问题,在XP下ComboBox控件文本框里有条粗黑线,在主窗体中 Main()方法把Application.EnableVisualStyles();这句注释掉就好了。 我现在不想注释这句,在XP样式下怎样能去掉这条黑线,求教各位高手。
|