using System; using System.Drawing; using System.Windows.Forms; namespace LibationWinForms { public class FormattableToolStripStatusLabel : ToolStripStatusLabel { public string FormatText { get; set; } /// Text set: first non-null, non-whitespace set is also saved as public override string Text { get => base.Text; set { if (string.IsNullOrWhiteSpace(FormatText)) FormatText = value; base.Text = value; } } #region ctor.s public FormattableToolStripStatusLabel() : base() { } public FormattableToolStripStatusLabel(string text) : base(text) => FormatText = text; public FormattableToolStripStatusLabel(Image image) : base(image) { } public FormattableToolStripStatusLabel(string text, Image image) : base(text, image) => FormatText = text; public FormattableToolStripStatusLabel(string text, Image image, EventHandler onClick) : base(text, image, onClick) => FormatText = text; public FormattableToolStripStatusLabel(string text, Image image, EventHandler onClick, string name) : base(text, image, onClick, name) => FormatText = text; #endregion /// Replaces the format item in a specified string with the string representation of a corresponding object in a specified array. Returns for convenience. /// An object array that contains zero or more objects to format. public string Format(params object[] args) => Text = string.Format(FormatText, args); } }