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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|