none
Visual Studio 2010 Form RRS feed

  • Question

  • Bonjour,

    J'aimerai quelques explications sur la création de Form en C# car j'ai créé un programme de test tout simple de type Application Windows Forms.
    Cette fenêtre ne fait rien et possède seulement un bouton avec le code suivant sur l'événement Click.

    private void button1_Click(object sender, EventArgs e)
    {
    	Form maForm = new Form();
    	maForm.Text = "maForm";
    	maForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    	maForm.ShowInTaskbar = false;
    	maForm.BackColor = Color.Aquamarine;
    
    	maForm.StartPosition = FormStartPosition.Manual;
    	maForm.Location = new Point(20, 20);
    	maForm.Width = 100;
    	maForm.Height = 100;
    //	maForm.Show(this);
            maForm.Show();
    
    	// Fonction de la dll User32
    	SetParent(maForm.Handle, this.Handle);
    }

    Lorsque je clique sur le bouton, j'ai un carré bleu qui s'affiche dans ma form ce qui est le résultat attendu !

    Mais avec l'aide du logiciel Window Detective, j'ai remarqué quelques choses de bizarre au niveau du résultat.
    Au niveau de mon programme TestApplication.exe, j'ai bien créé une fenêtre "Form1" et après avoir appuyé sur le bouton.
    J'ai une nouvelle fenêtre "maForm" de créé enfant de "Form1" mais j'ai également une fenêtre invisible qui appartient à TestApplication.exe en position (0, 0) et de taille (5, 5).

    Si par contre j'exécute le même code avec cette fois le Show(this), je n'ai pas cette fenêtre supplémentaire qui va se créer.

    Alors j'aimerai savoir si tout ceci est bien normal ou si je fais une erreur quelques parts ?

    Merci d'avance pour vos réponses.


    jeudi 13 juin 2013 14:30

Réponses

  • Bonjour,

    Cela donne quoi avec ShowInTaskbar à true ?

    Je ne sais plus dans quelles circonstances, mais je me souviens avoir lu qu'il arrive que Windows crée des fenêtres masquées pour des besoins de fonctionnement interne. Pour l'instant, je dirais que cela me semble plus être qq chose comme cela (peut-être une préparation à un affichage éventuel en barre des tâches ? - ce qui techniquement doit correspondre effectivement à l'utilisation d'une fenêtre) plus qu'à un réel problème dans le code.

    Il se pourrait que ce point ait été optimisé dans Windows 8 pour ne pas créer des fenêtres inutiles ou que le simple fait d'affecter la valeur ShowInTaskbar provoque ce phénomène ??

    Euh c'est nous les "détectives" ;-)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Olivier Gil vendredi 21 juin 2013 09:32
    jeudi 20 juin 2013 18:16
    Modérateur

Toutes les réponses