Другие упомянули использование DialogResult
, которое может работать - но в этом случае использования может быть немного злоупотреблено. Его предназначение состоит в том, чтобы сообщить родительской форме, что пользователь сделал с дочерней формой - они нажимали OK
или Cancel
? Они нажали Retry
или Abort
? Не интуитивно понятно, что его следует использовать для аутентификации.
Итак, что лучше? Вероятно, комбинация ...
Ваш LoginBox
класс является диалоговым окном, поэтому следует ожидать возврата DialogResult
, но его также следует использовать только для указания того, что пользователь сделал на Form
, а не результата аутентификации.
Я бы предложил рассмотреть использование некоторых других диалогов, таких как OpenFileDialog
. Он возвращает DialogResult
, чтобы указать, следует ли продолжать открывать файл , но он на самом деле не открывает файл, пока ему явно не сказано сделать это. Это означает, что потребляющий код должен как проверять результат, так и инструктировать диалоговое окно, чтобы он выполнял свою функцию, так что это не совсем просто - но это довольно условно.
Вот пример того, как я бы предложил вам использовать LoginBox
:
private void button1_Click(object sender, EventArgs e)
{
LoginBox login = new LoginBox();
if (login.ShowDialog() == DialogResult.OK) // Let the user input their credentials and click OK or Cancel
{
if (!login.ValidateCredentials) // Perform the authentication with the collected credentials
{
MessageBox.Show("The specified Credentials were invalid!");
}
}
}