Dlaczego tak
MessageBox.Show z przyciskami YesNoCancel zwraca DialogResult.No po kliknięciu „Nie”. Wartość ta nie spełnia żadnego z warunków, więc metoda Zapisz() nie jest wywoływana, a e.Cancel pozostaje false – zamykanie okna przebiega dalej. Okno pozostałoby otwarte tylko po wybraniu „Anuluj”, bo wtedy kod ustawia e.Cancel = true i przerywa zamykanie.