55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
|
using ModuleTools.Extensions;
|
|||
|
using System;
|
|||
|
using System.Drawing;
|
|||
|
|
|||
|
namespace DesktopTools.BaseControls
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Контрол, предоставляющий работу с однострочным текстовым полем
|
|||
|
/// </summary>
|
|||
|
public partial class BaseControlString : AbstractBaseControl
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Конструктор
|
|||
|
/// </summary>
|
|||
|
/// <param name="propertyName"></param>
|
|||
|
/// <param name="mustFilling"></param>
|
|||
|
/// <param name="readOnly"></param>
|
|||
|
/// <param name="maxLength"></param>
|
|||
|
public BaseControlString(string propertyName, bool mustFilling, bool readOnly, int? maxLength) : base(propertyName, mustFilling, readOnly)
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
if (maxLength.HasValue)
|
|||
|
{
|
|||
|
textBox.MaxLength = maxLength.Value;
|
|||
|
}
|
|||
|
textBox.TextChanged += (object sender, EventArgs e) => { CallOnValueChangeEvent(); };
|
|||
|
panelControl.Controls.Add(textBox);
|
|||
|
}
|
|||
|
|
|||
|
protected override void SetDefaultValue() => _originalValue = string.Empty;
|
|||
|
|
|||
|
protected override void SetValueToControl(object value) => textBox.Text = value?.ToString();
|
|||
|
|
|||
|
public override void DropValue() => textBox.Text = _originalValue?.ToString();
|
|||
|
|
|||
|
public override bool CheckValue()
|
|||
|
{
|
|||
|
if (_mustFilling && textBox.Text.IsEmpty())
|
|||
|
{
|
|||
|
BackColor = Color.OrangeRed;
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
protected override object GetValueFromControl()
|
|||
|
{
|
|||
|
if (_mustFilling && textBox.Text.IsEmpty())
|
|||
|
{
|
|||
|
throw new ArgumentNullException($"Поле свойства '{labelTitle.Text}' должно быть заполнено");
|
|||
|
}
|
|||
|
return textBox.Text;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|