Что происходит после Form.Close? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть код вроде

void onDgvRelations_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.ColumnIndex == 2 && ktlg == null)
    {
        this.Cursor = Cursors.WaitCursor;
        ktlg = new FormKatalog();
        ktlg.Show();
        this.Cursor = Cursors.Default;
    }
}

Идея состоит в том, чтобы проверить, если форма

FormKatalog ktlg

закрыто. Если он закрыт, я должен создать новую форму и показать ее пользователю. Проблема в том, что после того, как пользователь закроет форму, переменная ktlg никогда не будет нулевой.

Как правильно проверить, не была ли создана форма ИЛИ закрыт ли пользователь?

Ответы [ 3 ]

3 голосов
/ 19 марта 2012

Вы можете использовать пользовательский переключатель bool и установить его в Форма. Закрыто Обработчик событий

// on the class level
private bool isClosed = false;

void OnCellMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{    
   if (e.ColumnIndex == 2 && (ktlg == null || this.isClosed))     
   { 
        this.Cursor = Cursors.WaitCursor
        if (ktlg == null)
        {
           ktlg = new FormKatalog();
           ktlg.FormClosed += (s, e) => this.isClosed = true;
        }

        this.isClosed = false;
        ktlg.Show();         
        this.Cursor = Cursors.Default; 
   }
}
2 голосов
/ 19 марта 2012

Я предполагаю, что переменная ktlg является членом класса?Тогда вы можете сделать следующее:

void onDgvRelations_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.ColumnIndex == 2 && ktlg == null)
    {
        this.Cursor = Cursors.WaitCursor;

        if (ktlg == null)
        {
            ktlg = new FormKatalog();
            ktlg.FormClosed +=  (sender, e) => ktlg = null;
            ktlg.Show();
        }
        else
            ktlg.BringToFront();

        this.Cursor = Cursors.Default;
    }
}
1 голос
/ 19 марта 2012

Существует событие «Закрытие формы», которое вы можете использовать.

Это немного обманчиво, но вы можете установить флаг, когда пользователь закрывает форму (и возвращает его на FormoLoad)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...