Как я могу сбросить следующий обработчик событий? - PullRequest
0 голосов
/ 31 января 2012

Я установил обработчик событий для события, подобного этому:

 frm.FormClosed += (sender,  args) =>
                    {
                        if (this.myGrid.Enabled)
                        {
                            this.myGrid.Select();
                        }
                    };
 frm.Show();

Я хочу вывесить обработчик событий после закрытия формы.

Вы можете мне помочь?

Ответы [ 2 ]

4 голосов
/ 31 января 2012

Если вы имеете в виду, как удалить ваш обработчик события из события, вы не сможете использовать анонимного делегата, но вы можете создать метод с теми же параметрами и тем же кодом, а затем:

private void EventHandler(object sender, FormClosedEventArgs e)
{
     if (this.myGrid.Enabled)
     {
        this.myGrid.Select();
     }
}

frm.FormClosed += EventHandler; // Attach the event handler
frm.FormClosed -= EventHandler; // Remove the event handler
4 голосов
/ 31 января 2012

Я хочу вывесить обработчик событий после закрытия формы.

Я предполагаю, что вы хотите удалить его.

  1. Не обязательно, не тратьте на это время.Когда форма закрыта (и удалена), обработчик событий также будет собран.Он является членом той же формы, что следует из слова this в коде.

  2. Если вы все еще хотите удалить его, вам потребуется копия:

     FormClosedEventhandler closeHandler;  // class member
    
    
    
     closeHandler = (sender,  args) =>  
          {
             if (this.myGrid.Enabled)
             {
                this.myGrid.Select();
             }
          };
    
     frm.FormClosed += closeHandler ; // OnLoad
     ...
    
     frm.FormClosed -= closeHandler ; // OnClose
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...