Pour fermer C # formulaires Demande

j'ai 2 formulaires ...quand je commencerai l'application..et utilisez le "X" de la barre de titre que l'application entière ferme...maintenant, quand je sélectionne une option à partir du premier formulaire dans mon cas, c'est un bouton "Ajouter" comme son application phonebook..il va au deuxième formulaire comme j'ai utilisé 1stform.hide() et 2ndform.montrer.)(..maintenant, quand je fais " X " à partir de la barre de titre, il ne s'arrête pas complètement car la 1stform n'est pas fermée....comment la programmer de telle façon qu'à n'importe quelle étape de la demande devrait fermer

8
demandé sur Cody Gray 2011-02-04 15:41:51

4 réponses

Votre premier formulaire est défini comme le formulaire de démarrage. Cela signifie que chaque fois qu'il est fermé, votre demande entière est fermée. Et inversement, votre application ne ferme pas!--6-->jusqu'à il se ferme. Ainsi, lorsque vous masquez le formulaire de démarrage et que vous affichez le second formulaire, la fermeture du second formulaire par l'utilisateur ne déclenche pas la fermeture de votre application parce qu'il n'a fermé qu'un dialogue secondaire non-modal.

je recommande de changer votre design pour que la forme de démarrage soit aussi main formulaire de votre demande. Aucun sens essayer de travailler autour de la fonctionnalité intégrée qui peut réellement être utile. Vous voulez que la demande cesse lorsque le formulaire principal est fermé, peu importe quels autres formulaires pour enfants sont ouverts.

mais la solution rapide et sale dans votre cas est de faire un appel à Application.Exit. Qui va fermer des formulaires actuellement ouverts et quittez votre demande immédiatement. Comme je l'ai dit juste au dessus, je ne pas recommander cette approche parce que faire appel Application.Exit de toute forme FormClosed event handler est un signe que quelque chose s'est sérieusement mal passé dans votre design.

si le paradigme de la forme de démarrage unique ne fonctionne pas pour vous, vous devriez envisager de prendre les choses en main et de personnaliser le Main dans votre Program.cs fichier source. Voir les réponses données à cette question connexe pour quelques idées sur la façon dont cela pourrait fonctionner pour vous.

11
répondu Cody Gray 2017-05-23 12:34:02

Ce que vous pouvez faire est d'utiliser la Forme FormClosing événement, et ajoutez le code suivant:

Application.Exit();

ceci arrêtera toute l'application, et fermera toutes les fenêtres. Cependant, si un thread de fond est en cours d'exécution, le processus lui-même survivra. Dans ce cas, vous pouvez utiliser:

Environment.Exit();
5
répondu Øyvind Bråthen 2011-02-04 12:45:30

ajouter une Application.Sortie sur tous les formulaires de Clôture de l'événement

comme ceci:

créer d'abord un handler d'événement de clôture

private void Form_ClosingEventhandler()(object sender, CancelEventArgs e)
{
      //Perform any processing if required like saving user settings or cleaning resources
      Application.Exit();
}

puis liez cet événement à n'importe quelle forme que vous créez.

//Where you create new form and show it.
Form1 frm= new Form1();
//set other properties
frm.Closing += new EventHandler(Form_ClosingEventhandler);
Form2 frm2= new Form2();
//set other properties
frm2.Closing += new EventHandler(Form_ClosingEventhandler);
2
répondu Shekhar_Pro 2011-02-04 12:52:12

Vous ne voulez sûrement pas fermer l'application entière après que l'utilisateur ajoute un numéro de téléphone? Vous devez juste vous assurer que votre fenêtre principale redevient visible. Écrire que, comme ceci:

    private void AddButton_Click(object sender, EventArgs e) {
        var frm = new AddPhoneNumber();
        frm.StartPosition = FormStartPosition.Manual;
        frm.Location = this.Location;
        frm.Size = this.Size;   // optional
        frm.FormClosing += delegate { this.Show(); };
        frm.Show();
        this.Hide();
    }
1
répondu Hans Passant 2011-02-04 13:32:28