2013-07-12 2 views
-1

Моя программа вносит некоторые изменения в реестр во время ее запуска, и если они не будут отклонены должным образом, это может вызвать у пользователя некоторые проблемы. Например, они могут не использовать их подключение к Интернету.Исполнение кода, когда моя форма закрыта

Поэтому я должен убедиться, что когда они закрывают приложение, я возвращаю все обратно в норму. Для этого мне нужно знать, когда они нажали кнопку «Закрыть» формы. Как я могу это сделать? Есть ли какое-то событие, с которым я могу справиться?

ответ

2

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

Взятые из this предыдущего SO опубликовать то, что вам может понадобиться что-то вроде этого:

void FormClosed(object sender, FormClosedEventArgs e) 
{ 
    // do something useful 
} 
1

Есть еще possibilites здесь.

1) Используйте FormClosing событие формы:

private void form_FormClosing(object sender, FormClosingEventArgs e) { 
    if (e.CloseReason == CloseReason.UserClosing) { // User clicked 'X' button 
     if (someThing) e.Cancel = true;    // Disable Form closing 
    } 
} 

2) Вы также можете скрыть кнопку 'X' на множестве ControlBox ложь. Но это также скроет кнопки минимизации и максимизации.

3) Это отключает только кнопку «X». Поместите его в свою форму.

private const int CP_NOCLOSE_BUTTON = 0x200; 

    protected override CreateParams CreateParams { 
     get { 
      new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand(); 
      CreateParams cp = base.CreateParams; 
      cp.ClassStyle |= CP_NOCLOSE_BUTTON; 
      return cp; 
     } 
    } 
1

Существует событие вы можете подписаться на этот называется FormClosing огня, прежде чем FormClose и позволяет проверить/изменить настройки, нужно, прежде чем форма закрывается

public Form1() 
{ 
    InitializeComponent(); 
    FormClosing += Form1_FormClosing; 
} 

void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    // Reset values 
} 
Смежные вопросы