Windows Form depuis application appli Console

Messages postés
82
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009
- - Dernière réponse : thepoe
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
- 1 juin 2011 à 19:29
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
Afficher la suite 

9 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
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
*/
Commenter la réponse de cs_coq
Messages postés
82
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009
0
Merci
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
Commenter la réponse de RegVB
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Logiquemment non, qu'est ce que tu appelles "en attente" ?

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
82
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009
0
Merci
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
Commenter la réponse de RegVB
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Qu'elle ne soit plus visible ?

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
82
Date d'inscription
vendredi 23 août 2002
Statut
Membre
Dernière intervention
6 février 2009
0
Merci
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 ?
Commenter la réponse de RegVB
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
0
Merci
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
Commenter la réponse de thepoe
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
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
Commenter la réponse de sebmafate
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011
0
Merci
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é, @+
Commenter la réponse de thepoe