using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using System.Reflection;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace TextboxsStyleLineControlLibrary
{
/// <summary>
///csharp winform 划横线输入框
/// 塗聚文 2012-03-27
/// 締友計算機信息技術有限公司
/// 捷為工作室
/// </summary>
[ToolboxItem(true)]
public class GeovinDuTextBoxLine:TextBox
{
private bool m_DrawLine = false;
private const int WM_NCPAINT = 0x0085;
private const int WM_CHAR = 0x0102;
[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);
/// <summary>
///
/// </summary>
public GeovinDuTextBoxLine()
{
//
// TODO: 在此处添加构造函数逻辑
//
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.BorderStyle = BorderStyle.None;
}
private Color _linecolor = Color.Black;
/// <summary>
/// 线条颜色
/// </summary>
public Color LineColor
{
get
{
return this._linecolor;
}
set
{
this._linecolor = value;
this.Invalidate();
}
}
private const int WM_PAINT = 0xF;
/// <summary>
///
/// </summary>
public bool DrawLine
{
get
{
return this.m_DrawLine;
}
set
{
this.m_DrawLine = value;
this.Invalidate();
}
}
/// <summary>
///
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0xf || m.Msg == 0x133)
{
if (this.DrawLine)
{
IntPtr hDC = GetWindowDC(m.HWnd);
if (hDC.ToInt32() == 0)
{
return;
}
Graphics g = Graphics.FromHdc(hDC);
//Brush b = Brushes.Black;
Pen p = new Pen(this._linecolor, 1);//b
Point p1 = new Point(0, this.Height - 2);
Point p2 = new Point(this.Width, Height - 2);
g.DrawLine(p, p1, p2);
m.Result = IntPtr.Zero;
ReleaseDC(m.HWnd, hDC);
}
}
}
}
}
Csharp Winform TextBox 樣式以一條橫線顯示
最新推荐文章于 2024-06-06 21:45:28 发布