using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace UAS_MES_NEW.CustomControl.TextBoxWithIcon { public partial class RoundTextBox : UserControl { TextBox box = new TextBox(); public RoundTextBox() { InitializeComponent(); box.BorderStyle = BorderStyle.None; box.Width = this.Width; box.KeyDown += Box_KeyDown; this.Controls.Add(box); } private void Box_KeyDown(object sender, KeyEventArgs e) { UserKeyDown?.Invoke(sender, e); } public new char PassWordChar { get { return box.PasswordChar; } set { box.PasswordChar = value; } } [DefaultValue("")] public new string Text { get { return box.Text; } set { box.Text = value; } } public delegate void OnUserKeyDown(object sender, KeyEventArgs e); //定义事件 public event OnUserKeyDown UserKeyDown; int r = 6; [Category("布局"), Description("倒角半径。")] public int R { get { return r; } set { r = value; } } private void RoundTextBox_Paint(object sender, PaintEventArgs e) { int w = R * 2; base.OnPaintBackground(e); e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; using (GraphicsPath path = new GraphicsPath()) { path.AddArc(0, 0, w, w, 180, 90); path.AddArc(this.Width - w - 1, 0, w, w, -90, 90); path.AddArc(this.Width - w - 1, this.Height - w - 1, w, w, 0, 90); path.AddArc(0, this.Height - w - 1, w, w, 90, 90); path.CloseFigure(); e.Graphics.FillPath(Brushes.White, path); using (Pen pen = new Pen(Color.Gray)) { e.Graphics.DrawPath(pen, path); } } } private void RoundTextBox_Resize(object sender, EventArgs e) { box.Left = 5; box.Top = 3; } } }