Windows Form depuis application appli Console

Signaler
Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009
-
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
-
Bonjour,

J'ai une application console depuis laquelle je peux être amené à exécuter une Windows Form. Si cela arrive, je voudrais que l'application rende la main en console.
Par exemple : je lance monappli.exe dans une cmd, elle exécute la Windows Form et rend la main en console bien que la Windows Form soit dispo.

Pour cela j'ai testé System.Threading.Thread mais l'appli console reste toujours en attente de fermeture de la form. Avez vous une diée de la méthode à employer ?

Merci pour votre aide

9 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Salut,

Logiquement tu vas devoir (avec sans doute d'autres choses) lancer la boucle de pompage des messages Windows.
Voir Application.Run() notamment.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009

Bonjour,

Effectivement. Je fais comme suit :
static void Main(string[] args)
{
    if (args.Length > 0)
    {
          Thread thread;
           thread = new Thread(new ThreadStart(WinForms));              
           thread.Start();               
      }
      else { //Je lance mon application console classique}
}

ET
        public static void WinForms()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new myWinForm());
        }

Mais si j'exécute cela, la console reste en attente jusqu'à ce que la WinForm soit fermée

Une idée peut être ? En tout cas merci d'avoir répondu.

Reg
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Logiquemment non, qu'est ce que tu appelles "en attente" ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009

Bonjour,

Je suis de retour et je m'explique. J'exécute une Windows Form depuis un projet Console. J'ai donc ajouté une Form et lorsque je passe un certain paramètre en ligne de commande je voudrai charger la fenêtre Windows et donc que mon application ne se comporte plus comme une appli console. Sauf que la CMD est toujours derrière en attente de fermeture de la fenêtre Windows.

J'espère être clair
Et je voudrais bien que la CMD n'attende plus.

Reg
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Qu'elle ne soit plus visible ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
81
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009

Non, que la CMD rende la main.Maisplus j'y pense et plus je me dis que cela n'est pas possible étant donné que ma Form fait parti de mon projet, c'est comme si l'appli se fermait en laissant un morceau actif... Me trompe-je ?
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

Salut, j'ai fait de mon coté un truc comme ca (avec un new thread).
Par contre, la console ne se ferme pas tant qu'il y a une form ouverte.
Enjoy evbdy...

Imports System.Threading
Imports System.Windows.Forms

Module Module1
    Private thrd As New Thread(AddressOf thrdForm1)
    Sub Main()
        thrd.Start()
        Console.WriteLine("Debut")
        Thread.Sleep(10000)
        Console.WriteLine("traitement")
        Thread.Sleep(10000)
        Console.WriteLine("Fin du main")
    End Sub
    Sub thrdForm1()
        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        Application.Run(New Form1()) 'ici Form1 est ne nom de la form a ouvrir
    End Sub
End Module
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Bonjour,

C'est un forum C#, merci de poster des bouts de code en C# !

 
using System.Threading;
using System.Windows.Forms;

public class Program1
    private Thread thrd = new Thread(thrdForm1);
    
    public void Main() {
        thrd.Start();
        Console.WriteLine("Debut");
        Thread.Sleep(10000);
        Console.WriteLine("traitement");
        Thread.Sleep(10000);
        Console.WriteLine("Fin du main");
    } 

    public void thrdForm1()
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());  //ici Form1 est ne nom de la form a ouvrir
    }
}



Sébastien FERRAND
Ingénieur Concepteur Senior
Microsoft Visual C# MVP 2004 - 2009
Blog Photo
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

Salut,
Je suis vraiment désolé, je fait toujours mes demos en vb, j'ai oublié de vous la passer en C#.
Merci d'avoir corrigé, @+