8
votes

C # ouvrir une nouvelle forme et fermer l'autre

Dans mon programme, je montre un formulaire de connexion avant le formulaire principal, une fois que le programme détecte un identifiant réussi, j'utilise ceci:

MainForm Main = new MainForm();
Main.Show();
this.Hide();


0 commentaires

5 Réponses :


-1
votes

Comment sur ceci.close () à la place?


0 commentaires

1
votes

Modifier le formulaire principal à MainForm , et lorsque l'application se lance, dans votre formulaire de connexion MAINFORM_LOCLOAD comme boîte de dialogue, ils ne peuvent donc pas accéder au formulaire principal. < / p>

  • Si vous devez être capable de fermer l'application à partir du formulaire de connexion, utilisez application.exit (0);
  • Si vous ne voulez pas qu'ils voient la recherche de formulaire principale et le remplacement SETSVisbilibycore et appelez-le à l'intérieur MainForm_load . .

0 commentaires

10
votes

Essayez quelque chose de plus comme ceci: xxx

Vous souhaitez masquer le formulaire de connexion avant de montrer la boîte de dialogue, puis fermez le formulaire de connexion après la fermeture de la boîte de dialogue.

La fermeture de la boîte de dialogue de connexion finira par mettre fin à l'application, de sorte que ce n'est pas une solution réelle, mais vous voulez toujours masquer la connexion.

Mettez simplement, mettez les choses dans l'ordre que vous souhaitez qu'ils entrent, surtout lorsque vous traitez avec des boucles de messages.

Tout d'abord, vous masquez la forme de connexion.
Ensuite, vous affichez la boîte de dialogue de formulaire principal, mais empêchez l'appelant de "showdialog ()" de continuer jusqu'à la fermeture de la boîte de dialogue.
Enfin, une fois la boîte de dialogue terminée, vous fermez le formulaire de connexion, terminant l'application.


0 commentaires

9
votes

Vous devez spécifier votre MainForm CODE> lorsque vous regardez l'application et dans le gestionnaire d'événements code> code> de ce formulaire, demandez-vous à la connexion. Dans ce cas, vous aurez une application remplie et Connexion code> pour le démarrage:

programme.cs strong> p>

    private void Form1_Load(object sender, EventArgs e)
    {
        LoginForm loginForm = new LoginForm();
        if (loginForm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            // check login here
        }
    }


1 commentaires

Si vous masquez Mainform dans son événement de chargement avant d'afficher le formulaire de connexion, vous répliquez plus étroitement la fonctionnalité de l'utilisateur de l'ouverture du formulaire de connexion en premier.



1
votes

Vous pouvez utiliser ApplicationContext.Mainform code> Pour spécifier le formulaire principal actuel pour l'application: xxx pré>

puis dans le gestionnaire de connexion: P>

private void login_Click(object sender, EventArgs e)
{
    Program.Context.MainForm = new MainForm();

    // close login form
    this.Close();

    // set up context to track main form instead of login
    Program.Context.MainForm.Show(); 
}


0 commentaires