Как настроить DialogResult ПОСЛЕ нажатия кнопки? - PullRequest
1 голос
/ 13 мая 2019

Я создаю окно пароля с помощью Windows Form Designer, за исключением того, что контекст немного отличается. Есть несколько полей ввода, и одно из них защищено паролем. В верхней части главного окна есть кнопка «Изменить», которая порождает окно нового пароля. Пользователь вводит попытку пароля и нажимает «ОК». Мне нужен способ, чтобы кнопка OK проверила пароль, а затем отправила DialogResult.OK обратно в домашнее окно или отобразила «неверный пароль», если попытка неверна. Это означает, что я не могу изначально установить DialogResult на DialogResult.OK, поэтому я не уверен, как это сделать.

В настоящее время я устанавливаю DialogResult на DialogResult.OK в функции события клика, но, очевидно, это устанавливает его для следующего клика, а не для текущего, поэтому пользователь должен дважды нажать кнопку ОК.

private void buttonOK_Click(object sender, EventArgs e)
{
    string passwordAttempt = textBoxPassword.Text;
    if( passwordAttempt.CompareTo("pass") == 0 )
    {
        this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
    }
}

Одним из возможных решений является запуск второго события через код (не знаю, как это сделать). Или, в качестве альтернативы, есть ли лучший способ сделать окна паролей, о которых я не думаю в этой ситуации?

1 Ответ

1 голос
/ 14 мая 2019
  1. Установите AcceptButton диалогового окна на buttonOK (кнопка ОК).Это можно сделать либо в коде, либо в конструкторе.
  2. Установите DialogResult диалоговой формы, а не кнопку.

Код:

this.AcceptButton = buttonOK;

...

private void buttonOK_Click(object sender, EventArgs e)
{
    string passwordAttempt = textBoxPassword.Text;
    if (passwordAttempt.CompareTo("pass") == 0)
    {
        this.DialogResult = System.Windows.Forms.DialogResult.OK;
        Close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...