* UITextBox: 支持修改背景色

This commit is contained in:
Sunny 2021-10-15 16:43:26 +08:00
parent 2a551ae48f
commit 8017957187
7 changed files with 95 additions and 64 deletions

Binary file not shown.

Binary file not shown.

View File

@ -45,16 +45,16 @@ namespace Sunny.UI.Demo
this.uiLabel2 = new Sunny.UI.UILabel();
this.uiTextBox2 = new Sunny.UI.UITextBox();
this.uiLabel1 = new Sunny.UI.UILabel();
this.uiTextBox1 = new Sunny.UI.UITextBox();
this.uiIntegerUpDown1 = new Sunny.UI.UIIntegerUpDown();
this.uiToolTip1 = new Sunny.UI.UIToolTip(this.components);
this.uiTextBox1 = new Sunny.UI.UITextBox();
this.SuspendLayout();
//
// uiTextBox6
//
this.uiTextBox6.ButtonSymbol = 61761;
this.uiTextBox6.ButtonWidth = 100;
this.uiTextBox6.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox6.FillColor = System.Drawing.Color.White;
this.uiTextBox6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox6.Location = new System.Drawing.Point(117, 167);
this.uiTextBox6.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
@ -71,9 +71,9 @@ namespace Sunny.UI.Demo
//
// uiTextBox5
//
this.uiTextBox5.ButtonSymbol = 61761;
this.uiTextBox5.ButtonWidth = 100;
this.uiTextBox5.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox5.FillColor = System.Drawing.Color.White;
this.uiTextBox5.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox5.Icon = global::Sunny.UI.Demo.Properties.Resources.Home_32x32;
this.uiTextBox5.Location = new System.Drawing.Point(117, 128);
@ -90,9 +90,9 @@ namespace Sunny.UI.Demo
//
// uiTextBox4
//
this.uiTextBox4.ButtonSymbol = 61761;
this.uiTextBox4.ButtonWidth = 100;
this.uiTextBox4.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox4.FillColor = System.Drawing.Color.White;
this.uiTextBox4.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox4.Location = new System.Drawing.Point(30, 325);
this.uiTextBox4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
@ -209,10 +209,10 @@ namespace Sunny.UI.Demo
//
// uiTextBox3
//
this.uiTextBox3.ButtonSymbol = 61761;
this.uiTextBox3.ButtonWidth = 100;
this.uiTextBox3.CanEmpty = true;
this.uiTextBox3.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox3.FillColor = System.Drawing.Color.White;
this.uiTextBox3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTextBox3.Location = new System.Drawing.Point(117, 245);
this.uiTextBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
@ -240,11 +240,11 @@ namespace Sunny.UI.Demo
//
// uiTextBox2
//
this.uiTextBox2.ButtonSymbol = 61761;
this.uiTextBox2.ButtonWidth = 100;
this.uiTextBox2.CanEmpty = true;
this.uiTextBox2.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox2.DoubleValue = 5D;
this.uiTextBox2.FillColor = System.Drawing.Color.White;
this.uiTextBox2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTextBox2.IntValue = 5;
this.uiTextBox2.Location = new System.Drawing.Point(117, 206);
@ -272,25 +272,6 @@ namespace Sunny.UI.Demo
this.uiLabel1.Text = "String";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTextBox1
//
this.uiTextBox1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox1.FillColor = System.Drawing.Color.White;
this.uiTextBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox1.Location = new System.Drawing.Point(117, 89);
this.uiTextBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox1.Maximum = 2147483647D;
this.uiTextBox1.Minimum = -2147483648D;
this.uiTextBox1.MinimumSize = new System.Drawing.Size(1, 1);
this.uiTextBox1.Name = "uiTextBox1";
this.uiTextBox1.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox1.ShowButton = true;
this.uiTextBox1.Size = new System.Drawing.Size(221, 29);
this.uiTextBox1.TabIndex = 0;
this.uiTextBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiToolTip1.SetToolTip(this.uiTextBox1, "Hello world!");
this.uiTextBox1.Watermark = "水印文字";
//
// uiIntegerUpDown1
//
this.uiIntegerUpDown1.Font = new System.Drawing.Font("微软雅黑", 12F);
@ -311,6 +292,28 @@ namespace Sunny.UI.Demo
this.uiToolTip1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(239)))), ((int)(((byte)(239)))));
this.uiToolTip1.OwnerDraw = true;
//
// uiTextBox1
//
this.uiTextBox1.ButtonSymbol = 61761;
this.uiTextBox1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiTextBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiTextBox1.Location = new System.Drawing.Point(117, 89);
this.uiTextBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox1.Maximum = 2147483647D;
this.uiTextBox1.Minimum = -2147483648D;
this.uiTextBox1.MinimumSize = new System.Drawing.Size(1, 16);
this.uiTextBox1.Name = "uiTextBox1";
this.uiTextBox1.ShowButton = true;
this.uiTextBox1.Size = new System.Drawing.Size(221, 29);
this.uiTextBox1.Style = Sunny.UI.UIStyle.Custom;
this.uiTextBox1.StyleCustomMode = true;
this.uiTextBox1.TabIndex = 52;
this.uiTextBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.uiToolTip1.SetToolTip(this.uiTextBox1, "Hello world!");
this.uiTextBox1.Watermark = "水印文字";
this.uiTextBox1.ButtonClick += new System.EventHandler(this.uiTextBox1_ButtonClick);
//
// FTextBox
//
this.AllowShowTitle = true;
@ -331,8 +334,8 @@ namespace Sunny.UI.Demo
this.Controls.Add(this.uiLabel2);
this.Controls.Add(this.uiTextBox2);
this.Controls.Add(this.uiLabel1);
this.Controls.Add(this.uiTextBox1);
this.Controls.Add(this.uiIntegerUpDown1);
this.Controls.Add(this.uiTextBox1);
this.Name = "FTextBox";
this.Padding = new System.Windows.Forms.Padding(0, 35, 0, 0);
this.ShowTitle = true;
@ -361,8 +364,8 @@ namespace Sunny.UI.Demo
private UILabel uiLabel2;
private UITextBox uiTextBox2;
private UILabel uiLabel1;
private UITextBox uiTextBox1;
private UIIntegerUpDown uiIntegerUpDown1;
private UIToolTip uiToolTip1;
private UITextBox uiTextBox1;
}
}

View File

@ -11,5 +11,10 @@
{
uiTextBox1.Focus();
}
private void uiTextBox1_ButtonClick(object sender, System.EventArgs e)
{
ShowInfoTip("您点击了编辑框的按钮。");
}
}
}

View File

@ -63,7 +63,6 @@ namespace Sunny.UI
}
}
private Font oldFont;
private Boolean waterMarkTextEnabled;
private Color _waterMarkColor = Color.Gray;
@ -83,15 +82,15 @@ namespace Sunny.UI
WaterMark_Toggle(null, null);
}
protected override void OnPaint(PaintEventArgs args)
protected override void OnPaint(PaintEventArgs e)
{
// Use the same font that was defined in base class
Font drawFont = new Font(Font.FontFamily, Font.Size, Font.Style, Font.Unit);
//Create new brush with gray color or
SolidBrush drawBrush = new SolidBrush(WaterMarkColor);//use Water mark color
//Draw Text or WaterMark
args.Graphics.DrawString((waterMarkTextEnabled ? Watermark : Text), drawFont, drawBrush, new PointF(0.0F, 0.0F));
base.OnPaint(args);
if (waterMarkTextEnabled)
{
e.Graphics.FillRectangle(BackColor, Bounds);
e.Graphics.DrawString(Watermark, Font, WaterMarkColor, new PointF(0.0F, 0.0F));
}
base.OnPaint(e);
}
private void JoinEvents(Boolean join)
@ -100,7 +99,8 @@ namespace Sunny.UI
{
TextChanged += WaterMark_Toggle;
LostFocus += WaterMark_Toggle;
FontChanged += WaterMark_FontChanged;
GotFocus += WaterMark_Toggle;
MouseDown += WaterMark_Toggle;
}
}
@ -114,11 +114,9 @@ namespace Sunny.UI
private void EnableWaterMark()
{
//Save current font until returning the UserPaint style to false (NOTE: It is a try and error advice)
oldFont = new Font(Font.FontFamily, Font.Size, Font.Style, Font.Unit);
//Enable OnPaint event handler
SetStyle(ControlStyles.UserPaint, true);
waterMarkTextEnabled = true;
SetStyle(ControlStyles.UserPaint, Watermark.IsValid());
waterMarkTextEnabled = Watermark.IsValid();
//OnPaint right now
Refresh();
}
@ -128,18 +126,6 @@ namespace Sunny.UI
//Disable OnPaint event handler
waterMarkTextEnabled = false;
SetStyle(ControlStyles.UserPaint, false);
//Return back oldFont if existed
if (oldFont != null)
Font = new Font(oldFont.FontFamily, oldFont.Size, oldFont.Style, oldFont.Unit);
}
private void WaterMark_FontChanged(object sender, EventArgs args)
{
if (waterMarkTextEnabled)
{
oldFont = new Font(Font.FontFamily, Font.Size, Font.Style, Font.Unit);
Refresh();
}
}
protected override void OnKeyDown(KeyEventArgs e)

View File

@ -28,6 +28,7 @@
* 2021-08-15: V3.0.6
* 2021-09-07: V3.0.6
* 2021-10-14: V3.0.8
* 2021-10-15: V3.0.8
******************************************************************************/
using System;
@ -88,7 +89,9 @@ namespace Sunny.UI
btn.Top = 1;
btn.Height = 25;
btn.Width = 29;
btn.BackColor = Color.Transparent;
btn.Click += Btn_Click;
btn.Radius = 3;
edit.Invalidate();
Controls.Add(edit);
@ -109,6 +112,30 @@ namespace Sunny.UI
TextAlignmentChange += UITextBox_TextAlignmentChange;
}
/// <summary>
/// 填充颜色,当值为背景色或透明色或空值则不填充
/// </summary>
[Description("填充颜色,当值为背景色或透明色或空值则不填充"), Category("SunnyUI")]
[DefaultValue(typeof(Color), "White")]
public new Color FillColor
{
get
{
return fillColor;
}
set
{
if (fillColor != value)
{
fillColor = value;
_style = UIStyle.Custom;
Invalidate();
}
AfterSetFillColor(value);
}
}
private void Btn_Click(object sender, EventArgs e)
{
ButtonClick?.Invoke(this, e);
@ -217,7 +244,7 @@ namespace Sunny.UI
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
edit.BackColor = Enabled ? Color.White : FillDisableColor;
edit.BackColor = Enabled ? FillColor : FillDisableColor;
edit.Enabled = Enabled;
}
@ -488,6 +515,9 @@ namespace Sunny.UI
private void SizeChange()
{
if (edit == null) return;
if (btn == null) return;
if (!multiline)
{
if (Height < 12) Height = MinHeight;
@ -496,14 +526,14 @@ namespace Sunny.UI
if (Height < MinHeight)
{
edit.AutoSize = false;
edit.Height = Height - 2;
edit.Top = 1;
edit.Height = Height - 3;
edit.Top = 2;
}
else
{
edit.AutoSize = true;
edit.Height = MinHeight;
edit.Top = (Height - edit.Height) / 2;
edit.Top = (Height - edit.Height) / 2 + 1;
}
if (icon == null && Symbol == 0)
@ -525,12 +555,13 @@ namespace Sunny.UI
}
}
if (ShowButton)
{
btn.Left = Width - 2 - ButtonWidth;
btn.Top = 2;
btn.Height = Height - 4;
edit.Width = edit.Width - btn.Width - 1;
if (ShowButton)
{
edit.Width = edit.Width - btn.Width - 3;
}
}
else
@ -578,7 +609,7 @@ namespace Sunny.UI
set
{
edit.ReadOnly = value;
edit.BackColor = Enabled ? Color.White : FillDisableColor;
edit.BackColor = Enabled ? FillColor : FillDisableColor;
}
}
@ -711,7 +742,11 @@ namespace Sunny.UI
public override void SetStyleColor(UIBaseStyle uiColor)
{
base.SetStyleColor(uiColor);
edit.BackColor = fillColor = Enabled ? Color.White : FillDisableColor;
if (uiColor.IsCustom()) return;
fillColor = uiColor.EditorBackColor;
edit.BackColor = Enabled ? fillColor : FillDisableColor;
edit.ForeColor = foreColor = UIFontColor.Primary;
if (bar != null)
@ -719,7 +754,7 @@ namespace Sunny.UI
bar.ForeColor = uiColor.PrimaryColor;
bar.HoverColor = uiColor.ButtonFillHoverColor;
bar.PressColor = uiColor.ButtonFillPressColor;
bar.FillColor = Color.White;
bar.FillColor = fillColor;
}
Invalidate();

View File

@ -115,6 +115,8 @@ namespace Sunny.UI
public virtual bool BuiltIn => true;
public virtual Color EditorBackColor => Color.White;
public virtual void LoadFromFile()
{
}