96 lines
2.4 KiB
C#
96 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace PageDesign
|
|
{
|
|
[ToolboxItem(true)]
|
|
public partial class TextBoxLine : TextBox
|
|
{
|
|
public TextBoxLine()
|
|
{
|
|
// InitializeComponent();
|
|
|
|
this.SetStyle(ControlStyles.DoubleBuffer, true);
|
|
this.BorderStyle = BorderStyle.None;
|
|
}
|
|
|
|
public TextBoxLine(IContainer container)
|
|
{
|
|
container.Add(this);
|
|
|
|
// InitializeComponent();
|
|
|
|
this.SetStyle(ControlStyles.DoubleBuffer, true);
|
|
this.BorderStyle = BorderStyle.None;
|
|
}
|
|
|
|
private bool m_DrawLine = false;
|
|
public bool DrawLine
|
|
{
|
|
get
|
|
{
|
|
return this.m_DrawLine;
|
|
}
|
|
set
|
|
{
|
|
this.m_DrawLine = value;
|
|
this.Invalidate();
|
|
}
|
|
}
|
|
|
|
|
|
private Color _linecolor = Color.Black;
|
|
|
|
|
|
/// <summary>
|
|
/// 线条颜色
|
|
/// </summary>
|
|
public Color LineColor
|
|
{
|
|
get
|
|
{
|
|
return this._linecolor;
|
|
}
|
|
set
|
|
{
|
|
this._linecolor = value;
|
|
this.Invalidate();
|
|
}
|
|
}
|
|
|
|
[System.Runtime.InteropServices.DllImport("user32.dll ")]
|
|
static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
|
|
[System.Runtime.InteropServices.DllImport("user32.dll ")]
|
|
static extern IntPtr GetWindowDC(IntPtr hWnd);
|
|
|
|
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);
|
|
Pen p = new Pen(this._linecolor, 3.5f);
|
|
Point p1 = new Point(0, this.Height - 1);
|
|
Point p2 = new Point(this.Width, Height - 1);
|
|
g.DrawLine(p, p1, p2);
|
|
m.Result = IntPtr.Zero;
|
|
ReleaseDC(m.HWnd, hDC);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|