mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2025-07-01 22:59:27 +03:00
93 lines
2.0 KiB
C#
93 lines
2.0 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DarkUI
|
|
{
|
|
public class DarkLabel : Label
|
|
{
|
|
#region Field Region
|
|
|
|
private bool _autoUpdateHeight;
|
|
private bool _isGrowing;
|
|
|
|
#endregion
|
|
|
|
#region Property Region
|
|
|
|
[Category("Appearance")]
|
|
[Description("Determines whether the label will automatically update height based on content.")]
|
|
[DefaultValue(false)]
|
|
public bool AutoUpdateHeight
|
|
{
|
|
get { return _autoUpdateHeight; }
|
|
set
|
|
{
|
|
_autoUpdateHeight = value;
|
|
|
|
if (_autoUpdateHeight)
|
|
{
|
|
AutoSize = false;
|
|
ResizeLabel();
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Constructor Region
|
|
|
|
public DarkLabel()
|
|
{
|
|
ForeColor = Colors.LightText;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Method Region
|
|
|
|
private void ResizeLabel()
|
|
{
|
|
if (!_autoUpdateHeight || _isGrowing)
|
|
return;
|
|
|
|
try
|
|
{
|
|
_isGrowing = true;
|
|
var sz = new Size(Width, int.MaxValue);
|
|
sz = TextRenderer.MeasureText(Text, Font, sz, TextFormatFlags.WordBreak);
|
|
Height = sz.Height + Padding.Vertical;
|
|
}
|
|
finally
|
|
{
|
|
_isGrowing = false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Event Handler Region
|
|
|
|
protected override void OnTextChanged(EventArgs e)
|
|
{
|
|
base.OnTextChanged(e);
|
|
ResizeLabel();
|
|
}
|
|
|
|
protected override void OnFontChanged(EventArgs e)
|
|
{
|
|
base.OnFontChanged(e);
|
|
ResizeLabel();
|
|
}
|
|
|
|
protected override void OnSizeChanged(EventArgs e)
|
|
{
|
|
base.OnSizeChanged(e);
|
|
ResizeLabel();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|