Выполнить код при закрытии окна

Я считаю, что можно запустить код, когда кнопка закрытия нажимается в приложении Windows Forms в C#. Это дочерняя форма главного окна. Я хочу сохранить некоторые пользовательские настройки, когда пользователь закрывает окно.

private void fileTypeDialog_FormClosing(Object sender, FormClosingEventArgs e)
    {
        int ArraySize = fileTypesData.Items.Count;
        string[] fileTypesToSaveArray = new string[ArraySize];

        for (int i = 0; i < ArraySize; i++)
        {
            fileTypesToSaveArray[i] = fileTypesData.Items[i].ToString();
        }
        string fileTypesToSave = String.Join(",", fileTypesToSaveArray);
        MessageBox.Show(fileTypesToSave.ToString());
        Properties.Settings.Default.fileTypes = fileTypesToSave;
        Properties.Settings.Default.Save();
    }

Я сделал это, прежде чем я думаю, но я просто не могу вспомнить, как я это сделал. Ребята, вы можете мне помочь?

2 ответа

Решение

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

public Form1() {
  InitializeComponent();
  this.FormClosing += fileTypeDialog_FormClosing;
}

Но форма не должна слушать свои собственные события, так как она имеет доступ к своим защищенным методам событий. Так что просто начните вводить "переопределить OnForm" и выберите "OnFormClosing" от intellisense. Ваш блок кода будет выглядеть так:

protected override void OnFormClosing(FormClosingEventArgs e) {
  // your code here

  base.OnFormClosing(e);
}

При переопределении базового метода всегда включайте базовый вызов, как показано, если только у вас нет особых причин не делать этого.

Попробуйте использовать FormClosed вместо FormClosing, я старался и работал очень хорошо для меня:) Надежда помогла вам:)

Другие вопросы по тегам