Как проверить .NET элементы диалога при использовании автоматического DialogResult?

StackOverflow https://stackoverflow.com/questions/269390

  •  06-07-2019
  •  | 
  •  

Вопрос

В настоящее время я настроил пользовательский диалог отмены с выпадающим списком в c #. Кнопки ok и cancel используют свойство DialogResult, поэтому за ним нет кода. Теперь мне нужно проверить выпадающий список, чтобы убедиться, что он не оставлен пустым, прежде чем отправлять результат диалога.

Возможно ли это?

Это было полезно?

Решение

С здесь

Дважды щелкните поле «Закрытие» и реализуйте его следующим образом:

private void Second_Closing(object sender, 
        System.ComponentModel.CancelEventArgs e)
{
    // When the user attempts to close the form, don't close it...
    e.Cancel = (dropdown.selecteditemindex >= 0);
}

Другие советы

Отключайте кнопку ОК, пока в поле со списком не будет установлено правильное значение.

Если вы хотите что-то проверить, вам всегда нужен код для дизайнера. Для вашего случая вы можете использовать " Закрытие " событие в форме, проверьте, что вам нужно, и, если вы хотите, установите " e.Cancel = true; " - тогда форма не будет закрыта.

Для этого я не установил DialogResult на кнопку «ОК», а добавил за кнопкой некоторый код.

private void OkButton_Clicked(object sender, EventArgs e)
{
    this.DialogResult = ValueComboBox.SelectedIndex >= 0
        ? DialogResult.Ok
        : DialogResult.None;
}

Вы можете продолжать использовать функциональные возможности диалоговых окон «OK» и «Отмена», а затем поместить этот код в обработчик Clicked для кнопки «ОК»:

private void OkButton_Clicked(object sender, EventArgs e)
{
    if (!IsValid()) {
        this.DialogResult = System.Windows.Forms.DialogResult.None;
    }
}

В приведенном выше коде IsValid () - это метод, который вы должны реализовать, который проверяет поля ввода в диалоговом окне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top