Обход события закрытия окна из нажатия кнопки - PullRequest
0 голосов
/ 23 июня 2011

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

Я только что прочитал это, и это немного сбивает с толку. Я буду редактировать, если это будет необходимо.

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

Если я правильно вас понимаю, вы устанавливаете в OnClosing свойство Cancel на true, и поэтому окно не закрывается.Теперь вы ищите возможность закрыть окно от вашего события нажатия кнопки, хотя у вас есть это событие OnClosing.Правильно?
Возможность состоит в том, чтобы определить переменную-член, которую вы устанавливаете в событии кнопок.В OnClosing вы устанавливаете e.Cancel только в true, если эта переменная-член не установлена.

class YourClass{
    bool m_closeAnyway;
    void OnClosing(....){
         if(!m_closeAnyway){
             e.Cancel=true;
         }
    }
    void ButtonClickEventHandler(...){
        m_closeAnyway=true;
        Close();
        DoTheRest();
    }
1 голос
/ 23 июня 2011

Имейте свойство как ForceClosed по умолчанию в true и при нажатии кнопки установите в false. Когда происходит событие закрытия, проверьте, является ли ForceClosed истинным. Если это так, выполните все необходимое для предотвращения случайного закрытия.

1 голос
/ 23 июня 2011

Вы должны пересмотреть свой дизайн.

Вы можете сделать что-то подобное:

public void ClosingEvent (...)
{
    if(this.ToValidate)
    {
        this.Validate();
        // Or e.Cancel; I don't know exactly know what you want to prevent...
    }
}

public void ButtonClick(...)
{
   this.ToValidate = false;
   this.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...