KOP-PIbd-32-Katysheva-N-E/ComponentsLibrary/Email.cs

98 lines
2.4 KiB
C#
Raw Permalink Normal View History

2024-09-16 20:52:42 +04:00
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ListView;
using System.Text.RegularExpressions;
namespace ComponentsLibrary
{
public partial class Email : UserControl
{
private EventHandler? _changeEmail;
private string emailPattern;
public Email()
{
InitializeComponent();
}
//Должна всплывать подсказка ToolTip с примером правильного ввода (пример должен заполняться через публичный метод).
public void SetToolTip(string example)
{
toolTipEmail.SetToolTip(textBoxEmail, example);
}
private void showToolTip(object sender, EventArgs e)
{
toolTipEmail.Active = true;
}
//Публичное свойство для установки и получения введенного значения (set, get):
public string EmailValue
{
get
{
if (string.IsNullOrEmpty(emailPattern))
{
throw new EmailException("Шаблон электронной почты не задан.");
}
if (!IsValidEmail(textBoxEmail.Text))
{
throw new EmailException("Введенный адрес электронной почты не соответствует шаблону.");
}
return textBoxEmail.Text;
}
set
{
if (IsValidEmail(value))
{
textBoxEmail.Text = value;
}
else
{
textBoxEmail.Text = string.Empty;
}
}
}
//Шаблон, по которому будет проверяться вводимое значение, должен заполняться через публичное свойство
public string EmailPattern
{
get
{
return emailPattern;
}
set
{
emailPattern = value;
}
}
//правильный ввод должен заполняться через публичный метод
private bool IsValidEmail(string email)
{
if (string.IsNullOrEmpty(emailPattern))
{
2024-10-01 15:35:05 +04:00
return true;
2024-09-16 20:52:42 +04:00
}
return Regex.IsMatch(email, emailPattern);
}
//событие, вызываемое при смене значения
public event EventHandler ChangeEmail
{
add { _changeEmail += value; }
remove { _changeEmail -= value; }
}
private void textBoxEmail_TextChanged(object sender, EventArgs e)
{
_changeEmail?.Invoke(this, e);
}
public TextBox EmailTextBox
{
get
{
return textBoxEmail;
}
}
}
}