随笔10 - C# WinForm下的只带下边框的TextBox
来源:互联网 发布:淘宝模特是怎么入行的 编辑:程序博客网 时间:2024/06/05 02:44
/// <summary> /// 只显示下边框的TextBox控件 /// </summary> public class BottomTextBox : TextBox { /// <summary> /// 获得当前进程,以便重绘控件 /// </summary> /// <param name="hWnd"></param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32.dll")] static extern IntPtr GetWindowDC(IntPtr hWnd); /// <summary> /// 释放控件 /// </summary> /// <param name="hWnd"></param> /// <param name="hDC"></param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32.dll")] static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); /// <summary> /// 重绘TextBox /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { base.WndProc(ref m); try { if (m.Msg != 0xf && m.Msg != 0x133) { return; } IntPtr hDC = GetWindowDC(m.HWnd); if (hDC.ToInt32() == 0) { return; } Pen pen = new Pen(Color.Black, 2.0f); //绘制边框 System.Drawing.Graphics g = Graphics.FromHdc(hDC); g.DrawLine(pen, 0, this.Height, this.Width, this.Height); pen.Dispose(); //返回结果 m.Result = IntPtr.Zero; //释放 ReleaseDC(m.HWnd, hDC); this.BackColor = SystemColors.Control; this.BorderStyle = BorderStyle.None; } catch { } } }