KOP-PIbd-32-Katysheva-N-E/ComponentsLibrary/Email.cs
2024-09-16 20:52:42 +04:00

98 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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))
{
return true; // Если шаблон не задан, любая строка считается валидной.
}
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;
}
}
}
}