2016-12-25 4 views
0

J'ai un formulaire Windows séparé pour l'utilisateur de sélectionner la musique de fond et il restera toujours là sauf si l'application est fermée. J'empêché l'utilisateur de fermer la forme de musique en utilisant le code:Application.Exit() ne fonctionne pas correctement

private void Music_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
    } 

et dans mes principales Program.cs je lance une page appelée connexion comme ceci:

Application.Run(new Login()); 

J'ai aussi un événement FormClosed en toutes mes formes qui ferme tout le programme après avoir appuyé sur la croix

private void Login_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Application.Exit(); 
    } 

Cependant, après j'ajouter le code que l'utilisateur ne peut pas fermer le formulaire de musique, mon application est seulement capable de quitter en appuyant sur la croix quand il est dans la page de connexion, qui est le début du programme exécuté par la page principale (l'application utilisée pour être en mesure de quitter dans toutes mes formes par en appuyant sur la croix)

Je veux savoir s'il y a un moyen pour moi de quitter correctement mon application ou un moyen de rendre l'utilisateur incapable de fermer le formulaire musical sans affecter la fermeture de mon autre formulaire. Merci

+0

Vous ne pouvez pas fermer en utilisant le formulaire de la musique parce que vous annuler cette opération en utilisant 'e.Cancel = vrai, '.. n'êtes-vous pas? – user3185569

+0

ya je voulais dire que l'utilisateur ne pouvait pas fermer le formulaire de musique et ne pouvait être fermé qu'en fermant le formulaire principal –

+0

Ensuite, remplacez juste 'Application.Exit();' par 'Environment.Exit (0);'. Parce que 'Application.Exit();' soulève 'Music_FormClosing' qui le fait échouer. – user3185569

Répondre

2

Le code à l'intérieur de Music_FormClosing empêche la fermeture de votre application. Pour obtenir le comportement souhaité (empêcher l'utilisateur de fermer la forme de musique), vous pouvez utiliser le FormClosingEventArgsCloseReason propriété:

private void Music_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
     e.Cancel = true; 
} 
+0

Une erreur est survenue en disant que 'CloseReason' est un type qui n'est pas valide dans le contexte donné –

+0

Il s'agit simplement d'une faute de frappe (frappe de l'éditeur SO). Comme je l'ai mentionné dans la réponse, c'est une propriété du 'FormClosingEventArgs' passé. –

+0

J'ai réussi à résoudre mon problème merci :) –