textbox支持图标设置

This commit is contained in:
wpfly 2021-05-12 14:44:39 +08:00
parent 9c3d9003ac
commit 620bd8cf7e

View File

@ -44,13 +44,14 @@ namespace Sunny.UI
SetStyleFlags(); SetStyleFlags();
CalcEditHeight(); CalcEditHeight();
Height = MinHeight; Height = MinHeight;
iconSize = MinHeight;
ShowText = false; ShowText = false;
Font = UIFontColor.Font; Font = UIFontColor.Font;
Padding = new Padding(0, 0, 0, 0); Padding = new Padding(0, 0, 0, 0);
edit.Top = (Height - edit.Height) / 2; edit.Top = (Height - edit.Height) / 2;
edit.Left = 4 + Padding.Left; edit.Left = 4;
edit.Width = Width - 8 - Padding.Left - Padding.Right; edit.Width = Width - 8;
edit.Text = String.Empty; edit.Text = String.Empty;
edit.BorderStyle = BorderStyle.None; edit.BorderStyle = BorderStyle.None;
edit.TextChanged += EditTextChanged; edit.TextChanged += EditTextChanged;
@ -334,6 +335,7 @@ namespace Sunny.UI
protected override void OnPaddingChanged(EventArgs e) protected override void OnPaddingChanged(EventArgs e)
{ {
base.OnPaddingChanged(e); base.OnPaddingChanged(e);
SizeChange();
} }
public void SetScrollInfo() public void SetScrollInfo()
@ -376,10 +378,18 @@ namespace Sunny.UI
if (Height > MaxHeight) Height = MaxHeight; if (Height > MaxHeight) Height = MaxHeight;
edit.Top = (Height - edit.Height) / 2; edit.Top = (Height - edit.Height) / 2;
if (icon == null)
{
edit.Left = 4 + Padding.Left; edit.Left = 4 + Padding.Left;
edit.Width = Width - 8 - Padding.Left - Padding.Right; edit.Width = Width - 8 - Padding.Left - Padding.Right;
} }
else else
{
edit.Left = 4 + iconSize + Padding.Left;
edit.Width = Width - 8 - iconSize - Padding.Left - Padding.Right;
}
}
else
{ {
edit.Top = 3; edit.Top = 3;
edit.Height = Height - 6; edit.Height = Height - 6;
@ -813,5 +823,48 @@ namespace Sunny.UI
{ {
edit.Undo(); edit.Undo();
} }
private Image icon;
[Description("图标"), Category("SunnyUI")]
[DefaultValue(null)]
public Image Icon
{
get => icon;
set
{
icon = value;
SizeChange();
Invalidate();
}
}
private int iconSize;
[Description("图标大小(方形)"), Category("SunnyUI")]
public int IconSize
{
get => iconSize;
set
{
if (value > Height - 8)
{
iconSize = Height - 8;
}
else
{
iconSize = value;
}
SizeChange();
Invalidate();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (!multiline && icon != null)
{
e.Graphics.DrawImage(icon, new Rectangle(4, (Height - iconSize) / 2, iconSize, iconSize), new Rectangle(0, 0, iconSize, iconSize), GraphicsUnit.Pixel);
}
}
} }
} }