Files
lserp_cs_6.0/其他程序/xNewMyFormDesigner/TextBoxEx.cs
T
cyf ab56a9bcf7 基线 SVN r240
SVN-Revision: r240
2025-02-06 06:46:06 +00:00

66 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace NewMyFormDesigner
{
public partial class TextBoxEx : TextBox
{
private Color borderColor = Color.Black; // 设置默认的边框颜色
private static int WM_NCPAINT = 0x0085; // WM_NCPAINT message
private static int WM_ERASEBKGND = 0x0014; // WM_ERASEBKGND message
private static int WM_PAINT = 0x000F; // WM_PAINT message
public TextBoxEx()
{
// This call is required by the Windows.Forms Form Designer.
InitializeComponent();
// TODO: Add any initialization after the InitializeComponent call
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
this.SetStyle(ControlStyles.UserPaint, false);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.DoubleBuffer, true);
}
public void DrawBorder(ref Message message, int width, int height)
{
if (message.Msg == WM_NCPAINT || message.Msg == WM_ERASEBKGND ||
message.Msg == WM_PAINT)
{
using (Graphics graphics = Graphics.FromHwnd(base.Handle))
{
Rectangle rectangle = new Rectangle(0, 0, width, height);
ControlPaint.DrawBorder(graphics, rectangle,
Color.White, 0, ButtonBorderStyle.None,
Color.White, 0, ButtonBorderStyle.None,
Color.White, 0, ButtonBorderStyle.None,
BorderColor, 1, ButtonBorderStyle.Solid);
}
}
}
[Description("设置边框颜色")]
public Color BorderColor
{
get { return borderColor; }
set { borderColor = value; }
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
DrawBorder(ref m, this.Width, this.Height);
}
}
}