c# лучших событий для проверки строки (адреса электронной почты) и не потерял фокус в этой ячейке, если она не соответствует определенным условиям в dataGridView - PullRequest
0 голосов
/ 22 марта 2020

Что является лучшим или подходящим событием для проверки определенной строки, такой как адрес электронной почты. Строка с этим минимальными требованиями. Пример emailAddress=stack@overflow.us. Я пробовал cellValidated и cellEndEdit, но он теряет фокус после проверки строки. Что мне нужно, так это; emailAddress.Contains("@") emailAddress.Contains(".") emailAddress.Length>=5 .. et c.

Он не должен терять фокус на ячейке, если некоторые требования не выполняются.

1 Ответ

1 голос
/ 22 марта 2020

Вы хотите подключить событие DataGridView_CellValidating для этого. Это может работать как таковое… пользователь вводит некоторый текст в столбец электронной почты… когда пользователь пытается «покинуть» ячейку, сработает событие CellValidating. Именно здесь мы проверяем, находится ли проверяемая ячейка в столбце «Электронная почта». Если это и есть действительный адрес электронной почты, то ничего не происходит, и мы продолжаем. Однако, если текст НЕ является действительным адресом электронной почты, отображается окно сообщения с указанием неверного адреса электронной почты. Затем, после того как пользователь закроет окно сообщения ... ему будет «необходимо» ввести «действительный» адрес электронной почты в ячейку ИЛИ в этом случае введите пустую ячейку, чтобы продолжить.

Проверить сообщение можно Если сделать это несколькими способами, ссылка, предоставленная Zohar, является одним из способов проверки адреса и потребует использования библиотеки System.Net.Mail. Существует также другой метод от MS, который использует регулярные выражения и работает хорошо ... Как проверить, что строки имеют правильный формат электронной почты

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
  if (e.RowIndex >= 0 && dataGridView1.Columns[e.ColumnIndex].Name == "Email") {
    if (!String.IsNullOrEmpty(e.FormattedValue.ToString())) {
      if (!EmailIsValid(e.FormattedValue.ToString())) {
        MessageBox.Show("Invalid email address: " + e.FormattedValue.ToString());
        e.Cancel = true;
      }
    }
  }
}

public bool EmailIsValid(string emailaddress) {
  try {
    MailAddress m = new MailAddress(emailaddress);
    return true;
  }
  catch (FormatException) {
    return false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...