c # faites tourner un formulaire montrent alors une autre forme au-dessus avec showDialog?

StackOverflow https://stackoverflow.com/questions/4366780

  •  09-10-2019
  •  | 
  •  

Question

Je veux courir ma forme (avec tous les contrôles désactivés) et plus il y aura une autre forme pour nom d'utilisateur et mot de passe que l'exécution showDialog! les gens ne seront pas en mesure d'aller à la forme principale sans connexion!

 private void Form1_Load(object sender, EventArgs e)
        {
            this.Show();
            Form2 f2 = new Form2 ();
            f2.ShowDialog();
        }

J'ai essayé le code ci-dessus et la dose ne pas fonctionner comme il se doit!

comment je peux réaliser la I façon besoin?

hourras

Était-ce utile?

La solution

De la forme mère:

childForm.ShowDialog(this);

Cela fera le formulaire enfant modal à la forme mère. En ce qui concerne l'emplacement va, il y a une propriété hors de la forme (que vous voulez mettre sur la forme de l'enfant) qui lui indique où commencer (centre de l'écran, parent centre, etc.)

System.Windows.Forms.Form met en œuvre IWin32Window, voilà pourquoi cela fonctionne.

Autres conseils

On ne sait pas ce que la question / question, mais vous pouvez essayer de faire en sorte que vous passez dans la forme parente, i.e..

using(var childForm = new MySpecialLoginForm(...)) {
    childForm.ShowDialog(this);
}

euh ...

DialogResult result = mySecondForm.ShowDialog()

Ceci désactivera la forme de parent jusqu'à ce que celui-ci est fermé. DialogResult sera une valeur ENUM est quelque chose comme OK / Annuler / OuiNon etc

J'utilise généralement le modèle suivant si je veux faire qqch. Une fois le formulaire complètement chargé:

public partial class BaseForm : Form
{
    public event EventHandler Loaded;

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        Application.Idle += OnLoaded;
    }

    protected void OnLoaded(object sender, EventArgs e)
    {
        Application.Idle -= OnLoaded;

        if (Loaded != null)
        {
            Loaded(sender, e);
        }
    }
}

Si je tire ma principale forme de BaseForm J'ai un événement Loaded qui, dans votre cas, j'utiliser comme suit.

static class Program
{

    [STAThread]
    static void Main()
    {
        var mainForm = new MainForm();
        mainForm.Loaded += (sender, e) => { new LoginDialog().ShowDialog(mainForm); };

        Application.Run(mainForm);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top